実行時に名前だけがわかるテーブルの削除を呼び出す必要があります。EXEC()を呼び出すとエラーが発生します:ストアドプロシージャが見つかりませんでした
私は、tablenameと条件で動的にdelete文を作成し、その文字列をEXEC()関数の引数として渡すストアドプロシージャを持っています(これはトランザクション内にあります。
ストアドプロシージャを実行すると、私はエラーが発生します。ストアドプロシージャを見つけることができませんでした。私は動的に作成され、EXEC()に送信されたステートメントを参照しています。
は、ここに私のコードです:
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
...
ここでエラーです:
Could not find stored procedure 'DELETE FROM myTable WHERE id = 1111'