0
这可能很简单,但我似乎无法看到问题所在。动态查询的SQL错误
下面是错误:
消息102,级别15,状态1,行30
附近有语法错误TTP ID'。消息137,级别15,状态2,行36
必须声明标量变量“@TransPeriodID”。
下面是脚本:
create procedure [dbo].[InsertPayrollTransactions]
@TransPeriodID int,
@PayrollID int,
@TableCode int
as
begin
DECLARE @SQLString NVARCHAR(MAX)
DECLARE @ParmDefinition NVARCHAR(500)
IF @TableCode > 5 OR @TableCode < 0
BEGIN
SET @TableCode = 0
END
SELECT @SQLString =
'INSERT INTO [dbo].[TA Payroll Transactions' + CASE @TableCode
WHEN 0 THEN ''
WHEN 1 THEN '1'
WHEN 2 THEN '2'
WHEN 3 THEN '3'
WHEN 4 THEN '4'
WHEN 5 THEN '5'
END + '] ([TTP ID], [Payroll ID])
VALUES (@TransPeriodID, @PayrollID)'
SET @ParmDefinition = N'([TTP ID] int, [Payroll ID] int)'
-- PRINT @SQLString
EXECUTE sp_executesql @SQLString,
@ParmDefinition,
@TransPeriodID = @TransPeriodID,
@PayrollID = @PayrollID
end
我不得不这样做(不使用动态SQL)的方式不同,但同事提出这一点。他给了我一个类似脚本的例子,并且工作正常,但是很明显,我在将它应用到此脚本时出错了。我试图比较我可能错过了什么(逗号或撇号),但无济于事。
感谢您的链接。 – Igavshne