簡體   English   中英

將varchar轉換為數值數據類型的算術溢出錯誤。 找不到存儲過程“。”?

[英]Arithmetic overflow error converting varchar to data type numeric. Could not find stored procedure ''.?

執行存儲過程( SP_StoredProcedure )時出現此錯誤:

在此處輸入圖片說明 我的存儲過程( SP_StoredProcedure )在執行之前從VB.NET收集了一些數據

dim TableName string = "Table1"
dim acctcode as string "Table1.acctcode"
dim month as integer = 1
dim year as integer = 2011

這是我從VB.NET執行存儲過程( SP_StoredProcedure )的代碼:

execute("EXECUTE SP_StoredProcedure '"& TableName &"','"& acctcode &"',"& month &","& year &"") 

這是我在SP_StoredProcedure代碼:

CREATE PROCEDURE [dbo].[SP_StoredProcedure]
@TableName as varchar(100),
@AcctCode as varchar(100),
@Month as numeric(18,0),
@Year as numeric(18,0)

AS
BEGIN
DECLARE @Query as varchar(1000)
SET @Query = 
'UPDATE Table2 SET Dat = (SELECT Dat FROM '+ @TableName +' WHERE table2.acctcode = '+ @acctcode +' AND month = '+ @month +' AND year = '+ @year +') FROM Table2'
EXEC @Query
END

在varchar字符串中執行動態查詢時,需要轉換數值,這對於日期也很重要! 否則,它不會正確地附加到@Query變量。

同樣,如果@acctcode是varchar,則需要用額外的單引號將其轉義,以便它可以像對待字符串一樣正確處理它。

即..

SET @Query = ' UPDATE Table2 ' + 
             ' SET Dat = ( ' +
             '     SELECT Dat FROM ' + @TableName + 
             '     WHERE table2.acctcode = '''+ @acctcode +''' +
             '     AND month = ' + convert(varchar(18), @month) + 
             '     AND year = '+ convert(varchar(18), @year) +
             ' ) ' + 
             ' FROM Table2 '

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM