![](/img/trans.png)
[英]Arithmetic overflow error converting varchar to data type numeric in stored procedure
[英]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.