我有以下存储过程动态SQL Server存储与表名作为输入参数的过程
CREATE PROCEDURE [dbo].[Insert]
@Service varchar(max),
@TableName varchar(100),
@Query varchar(250),
@Results varchar(max),
@CreatedDate datetime,
@ExpirationDate datetime
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION
DECLARE @SQL NVARCHAR(MAX), @ParmDefinition NVARCHAR(MAX)
DECLARE @q1 VARCHAR(MAX), @rez1 VARCHAR(MAX),
@date1 DATETIME, @date2 DATETIME
DECLARE @tablename VARCHAR(MAX) = @Service + '.' + @TableName
SET @SQL = N'if not EXISTS (select @q from ' + @tablename + ' where Query = @q) insert into ' + @tablename + ' values(@q, @rez, @date1, @date2)'
SET @ParmDefinition = N'@q varchar(max), @rez varchar(max),
@date1 datetime, @date2 datetime'
EXECUTE sp_executeSQL -- Dynamic T-SQL
@SQL,
@ParmDefinition,
@q = @Query,
@rez = @Results,
@date1= @CreatedDate,
@date2 = @ExpirationDate
COMMIT TRANSACTION
END
当我试着执行它时,它不会将任何东西,0行
如果我执行没有存储过程的代码,就像它插入的单个查询
我错过了什么吗?
你确定使用'@ TableName'和'@ tablename'作为2个不同的变量有效吗? – jazzytomato 2014-10-10 11:52:02
尝试使用PRINT,看看执行过程中发生了什么。传递参数到执行可能是issue.Please提供一些示例为参数 – Recursive 2014-10-10 11:53:26
修改与另一个变量@dynamictable,仍然没有插入 – user3057678 2014-10-10 11:53:45