我有以下存儲過程動態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