【发布时间】:2016-05-20 01:09:11
【问题描述】:
我遇到了一个错误
将数据类型 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)
就像我说的,我正在使用 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
所以我这边没有代码负责发送一个字符串应该是 int 的位置,反之亦然。像以前一样,如果我像使用 BuildID 参数一样取出 @SuiteID 参数,它将完美运行。为什么它认为传入的 13 是一个字符串,我不知道。
【问题讨论】:
-
' + @suiteID + ' 等同于 '13' 是一个字符串
标签: sql-server stored-procedures bigint