Sql server 错误:字符串“的转换”;声明@RepInt=";加倍是无效的
我有这个疑问Sql server 错误:字符串“的转换”;声明@RepInt=";加倍是无效的,sql-server,vb.net,Sql Server,Vb.net,我有这个疑问 Dim count as integer = 4 Dim sql As String = " DECLARE @rep INT = " + count + "; " + _ " WITH cte AS " + _ " ( " + _ " SELECT TOP (@rep) " + _
Dim count as integer = 4
Dim sql As String = " DECLARE @rep INT = " + count + "; " + _
" WITH cte AS " + _
" ( " + _
" SELECT TOP (@rep) " + _
" ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS N " + _
" FROM sys.All_Columns ac1 " + _
" CROSS JOIN sys.ALL_Columns ac2 " + _
" ) " + _
" SELECT t.Barcode" + _
" FROM A_Documents t " + _
" CROSS JOIN cte " + _
" where idDocument = 'doc-123456' " + _
" ORDER BY t.Barcode desc; "
如果我输入一个没有var的数字,ist工作:
Dim sql As String = " DECLARE @rep INT = 4; " + _
但当我把我的计数变量,是不是工作:
Dim sql As String = " DECLARE @rep INT = " + count + "; " + _
并显示以下错误消息:
字符串“Declare@RepInt=”到double的转换无效
这是
+
运算符的预期行为
当您向其输入数字变量时,系统会尝试将所有其他对象转换为该数字类型以完成加法,因此出现异常
imho这是一个特性,因为它允许您准确地知道要连接的内容
解决方案:
Dim sql As String = " DECLARE @rep INT = " + count.ToString + "; " + _
这是
+
运算符的预期行为
当您向其输入数字变量时,系统会尝试将所有其他对象转换为该数字类型以完成加法,因此出现异常
imho这是一个特性,因为它允许您准确地知道要连接的内容
解决方案:
Dim sql As String = " DECLARE @rep INT = " + count.ToString + "; " + _
当您尝试添加字符串和数字时,它将尝试将字符串转换为数字。您可以改为使用
&
运算符,该运算符将非字符串的任何内容转换为字符串:
Dim sql As String = " DECLARE @rep INT = " & count & "; " + _
当您尝试添加字符串和数字时,它将尝试将字符串转换为数字。您可以改为使用
&
运算符,该运算符将非字符串的任何内容转换为字符串:
Dim sql As String = " DECLARE @rep INT = " & count & "; " + _
实际上,您不需要声明变量。您可以将其立即传递到
TOP(+count+
中。第二,考虑使用参数绑定而不是字符串连接。另外,如果您需要将convertcount
连接到string。再次感谢您的帮助,我不能勾选您的评论,因为这不是答案(不要紧,请在下面的答案上投票;)实际上,您不需要声明变量。您可以将其立即传递到TOP(+count+
中。第二,考虑使用参数绑定而不是字符串连接。另外,如果您需要将convertcount
连接到string。再次感谢您的帮助,我不能勾选您的评论,因为这不是答案(不要紧,请在下面的答案上投票;)