灵活插入STORED PROCEDURE

时间:2014-09-17 10:10:06

标签: sql

我存储的

alter PROCEDURE [dbo].[InsertDynamicFun]
    @TblName nvarchar(max),@F1 nvarchar(50),@F2 nvarchar(50),@F3 nvarchar(50),@F4 nvarchar(50)
                          ,@P1 nvarchar(50),@P2 nvarchar(50),@P3 nvarchar(50),@P4 nvarchar(50)
AS
BEGIN
declare @TAblE nvarchar(max);


set @TAblE = 'Insert Into ' + @TblName + '('+@F1+','+@F2+','+@F3+','+@F4+')Values ('+@P1+','+@P2+','+@P3+','+@P4+')'
    exec(@TAblE)
END

显示错误

Msg 207, Level 16, State 1, Line 3
Invalid column name 'Value of @P2'.
Msg 207, Level 16, State 1, Line 3
Invalid column name 'Value of @P3'.
Msg 207, Level 16, State 1, Line 3
Invalid column name 'Value of @P4'.

但是@ P1没有表现出她的错  我希望通过将参数传递给存储的PROCEDURE来保存任何表中的数据 并考虑到数字字段

1 个答案:

答案 0 :(得分:0)

此错误是因为您的参数之一:

@ F1,@ F2,@ F3,@ F4可能包含以下值:

'Value of @P2'

'Value of @P3'

Value of @P3

Value of @P4

这不是@TblName的列名。

请使用以下方法检查上述参数的值:

print @F1

print @F2

print @F3

print @F4

这会让你知道确切的问题。