Joe*_*aci 0 sql-server stored-procedures bigint
我收到了一个错误
将数据类型nvarchar转换为bigint时出错
当我没有转换任何东西时.我正在做的就是尝试插入新记录.存储过程如下所示,如果我带走了我的bigint参数,它可以完美地工作.这也在SQL Server Management Studio中进行测试,因此我端的任何代码缺陷都不是问题.
ALTER PROCEDURE dbo.sp_generateTestTable
@suiteID AS bigint,
@testXml AS nvarchar(128),
@platXml AS nvarchar(128),
@table AS nvarchar(32)
DECLARE @QUERY VARCHAR(2000) = ''
SET @QUERY = 'INSERT INTO SACT.dbo.' + @table + '(BUILD_ID, SUITE_ID, ISAUTOMATED, DATESTARTED, TESTXML, PLATFORMXML)
VALUES (3568, ' + @suiteID + ', 1, GETDATE(), ''' + @testXml + ''', ''' + @platXml +''' ) '
EXECUTE (@QUERY)
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,我正在使用SQL Server Management Studio对此进行测试
DECLARE @return_value int
EXEC @return_value = dbo.sp_generateTestTable
@testXml = N'mytest.xml'
,@platXml = N'myplatform.xml'
,@table = N'BoulderHMI'
,@suiteID = 13
Run Code Online (Sandbox Code Playgroud)
因此,我的代码上没有代码负责发送一个int应该是的字符串,反之亦然.像以前一样,如果我拿出@SuiteID param就像我做了BuildID参数一样,它将完美无瑕地工作.为什么它认为传入的13是一个字符串,我不知道.
问题是您必须将@SuiteID转换/转换为nvarchar.这是编码的方式,它将隐式转换为最高阶数据类型,在这种情况下将是int.它试图对字符串值进行数学运算.
你的代码的修复就是这个.
, ' + CAST(@suiteID as nvarchar(4)) + '
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
495 次 |
| 最近记录: |