Sql server 调用EXEC()生成错误:找不到存储过程
我需要对一个表调用delete,该表的名称只有在运行时才为人所知 我有一个存储过程,它使用tablename和criteria动态地生成delete语句,然后将该字符串作为参数传递给EXEC函数——显然,所有这些都在事务中 当我运行存储过程时,我得到一个错误-找不到存储过程-引用我动态制定并发送给EXEC的语句 这是我的密码:Sql server 调用EXEC()生成错误:找不到存储过程,sql-server,tsql,Sql Server,Tsql,我需要对一个表调用delete,该表的名称只有在运行时才为人所知 我有一个存储过程,它使用tablename和criteria动态地生成delete语句,然后将该字符串作为参数传递给EXEC函数——显然,所有这些都在事务中 当我运行存储过程时,我得到一个错误-找不到存储过程-引用我动态制定并发送给EXEC的语句 这是我的密码: DECLARE @dynTab AS varchar(50), @dynDelete AS varchar(255) DECLARE @crsr CURSOR
DECLARE @dynTab AS varchar(50), @dynDelete AS varchar(255)
DECLARE @crsr CURSOR
SET @crsr = CURSOR FAST_FORWARD
FOR
SELECT dyn_tablename FROM dyn_tab WHERE dyn_doc_type_id IN (SELECT doc_id FROM tree_tab WHERE id = @id) AND dyn_tablecreated = 1
OPEN @crsr
FETCH NEXT FROM @crsr
INTO @dynTab
WHILE @@FETCH_STATUS = 0 AND @@ERROR = 0
BEGIN
SET @dynDelete = 'DELETE FROM ' + @dynTab + ' WHERE id = ' + @id
EXEC @dynDelete
FETCH NEXT FROM @crsr
INTO @dynTab
END
CLOSE @crsr
DEALLOCATE @crsr
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
return 0
END
以下是错误:
找不到存储过程“从id=1111的myTable中删除”
不带括号的EXEC尝试调用过程
试一试EXEC@dynDelete你需要写
EXEC@dynDelete使用EXEC或EXECUTE执行Sql查询,如下所示:
SET @dynDelete = 'DELETE FROM ' + @dynTab + ' WHERE id = ' + @id
EXEC(@dynDelete)
或
如果使用EXEC,则从SqlDataSource中删除DeleteCommandType
SET @dynDelete = 'DELETE FROM ' + @dynTab + ' WHERE id = ' + @id
EXECUTE(@dynDelete)