SQL 服务器错误 80040e14 在结果集中使用经典 ASP
SQL Server error 80040e14 Using Classic ASP in a Result Set
我正在尝试 select 使用经典 ASP 和 SQL 服务器从数据库中获取向量每个位置的结果。到目前为止的代码:
FOR EACH x IN Tabela
sql = "SELECT DISTINCT tborders.family AS family, tborders.qty AS qty, tborders.los AS los, CONVERT(DATE, tborders.mrd_date) AS mrd FROM [DASH].[dashboard_db].[dbo].[tb_family] AS tbfamily INNER JOIN [DASH].[dashboard_db].[dbo].[tb_started_zero] AS tborders ON tbfamily.[family] = tborders.[family] WHERE tborders.[Order Number] = "&x&""
SET rs = conn.execute(sql)
IF rs.EOF = false THEN
mrd(counter) = rs("mrd")
family(counter) = rs("family")
los(counter) = rs("los")
qty(counter) = rs("qty")
counter=counter+1
END IF
NEXT
注意 tborders.[Order Number]
是一个 int
类型值。出于某种原因,我遇到了这个错误:
Microsoft SQL Server Native Client 11.0 error '80040e14'
Incorrect syntax near '='.
/asplearning/act/validate-schedule-line.asp, line 46
我曾尝试删除 SET
,但我的结果集未被识别为对象。我很确定这些类型很好,我试过了:
if isNumeric(x) THEN
response.write("<h1>it is numeric</h1>")
else
response.write("<h1>not numeric</h1>")
end if
并且Tabela
的每个位置都写了"it is numeric"。任何人都可以帮助解决问题吗?
看起来你有一个空项目(集合的第一个或最后一个项目)。
强烈建议您使用sp_executesql。这将使用已编译的执行计划,这将验证您的参数(针对 sql 注入)。
FOR EACH x IN Tabela
if len(x) > 0 then
sql = "exec sp_executeSql N'SELECT DISTINCT tborders.family AS family, tborders.qty AS qty, tborders.los AS los, CONVERT(DATE, tborders.mrd_date) AS mrd FROM [DASH].[dashboard_db].[dbo].[tb_family] AS tbfamily INNER JOIN [DASH].[dashboard_db].[dbo].[tb_started_zero] AS tborders ON tbfamily.[family] = tborders.[family] WHERE tborders.[Order Number] = @OrderNumber', N'@OrderNumber int', @orderNumber = " & x
SET rs = conn.execute(sql)
IF rs.EOF = false THEN
mrd(counter) = rs("mrd")
family(counter) = rs("family")
los(counter) = rs("los")
qty(counter) = rs("qty")
counter=counter+1
END IF
rs.close
end if
NEXT
我正在尝试 select 使用经典 ASP 和 SQL 服务器从数据库中获取向量每个位置的结果。到目前为止的代码:
FOR EACH x IN Tabela
sql = "SELECT DISTINCT tborders.family AS family, tborders.qty AS qty, tborders.los AS los, CONVERT(DATE, tborders.mrd_date) AS mrd FROM [DASH].[dashboard_db].[dbo].[tb_family] AS tbfamily INNER JOIN [DASH].[dashboard_db].[dbo].[tb_started_zero] AS tborders ON tbfamily.[family] = tborders.[family] WHERE tborders.[Order Number] = "&x&""
SET rs = conn.execute(sql)
IF rs.EOF = false THEN
mrd(counter) = rs("mrd")
family(counter) = rs("family")
los(counter) = rs("los")
qty(counter) = rs("qty")
counter=counter+1
END IF
NEXT
注意 tborders.[Order Number]
是一个 int
类型值。出于某种原因,我遇到了这个错误:
Microsoft SQL Server Native Client 11.0 error '80040e14'
Incorrect syntax near '='.
/asplearning/act/validate-schedule-line.asp, line 46
我曾尝试删除 SET
,但我的结果集未被识别为对象。我很确定这些类型很好,我试过了:
if isNumeric(x) THEN
response.write("<h1>it is numeric</h1>")
else
response.write("<h1>not numeric</h1>")
end if
并且Tabela
的每个位置都写了"it is numeric"。任何人都可以帮助解决问题吗?
看起来你有一个空项目(集合的第一个或最后一个项目)。
强烈建议您使用sp_executesql。这将使用已编译的执行计划,这将验证您的参数(针对 sql 注入)。
FOR EACH x IN Tabela
if len(x) > 0 then
sql = "exec sp_executeSql N'SELECT DISTINCT tborders.family AS family, tborders.qty AS qty, tborders.los AS los, CONVERT(DATE, tborders.mrd_date) AS mrd FROM [DASH].[dashboard_db].[dbo].[tb_family] AS tbfamily INNER JOIN [DASH].[dashboard_db].[dbo].[tb_started_zero] AS tborders ON tbfamily.[family] = tborders.[family] WHERE tborders.[Order Number] = @OrderNumber', N'@OrderNumber int', @orderNumber = " & x
SET rs = conn.execute(sql)
IF rs.EOF = false THEN
mrd(counter) = rs("mrd")
family(counter) = rs("family")
los(counter) = rs("los")
qty(counter) = rs("qty")
counter=counter+1
END IF
rs.close
end if
NEXT