[英]SQL Server error 80040e14 Using Classic ASP in a Result Set
我正在嘗試使用經典的ASP和SQL Server從數據庫中為矢量的每個位置選擇結果。 到目前為止的代碼:
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本機客戶端11.0錯誤'80040e14'
'='附近的語法不正確。
/asplearning/act/validate-schedule-line.asp,第46行
我嘗試刪除SET
,但隨后我的結果集未被識別為對象。 我已經確定類型很好,我已經嘗試過:
if isNumeric(x) THEN
response.write("<h1>it is numeric</h1>")
else
response.write("<h1>not numeric</h1>")
end if
它為Tabela
每個位置都寫了“它是數字”。 任何人都可以解決似乎存在的問題嗎?
看起來您有一個空項目(集合的第一個或最后一個項目)。
我強烈建議您使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.