Tôi cần gọi một lệnh xóa trên một bảng có tên sẽ chỉ được biết khi chạy.gọi EXEC() tạo ra lỗi: không thể tìm thấy thủ tục được lưu trữ
Tôi có một thủ tục được lưu trữ để xây dựng câu lệnh xóa với tablename và tiêu chí động, và sau đó chuyển chuỗi đó làm đối số cho hàm EXEC() (tất cả điều này nằm trong giao dịch).
Khi tôi chạy thủ tục đã lưu, tôi gặp lỗi - không thể tìm thấy quy trình được lưu trữ - tham chiếu đến câu lệnh tôi đã tạo động và gửi đến EXEC().
Dưới đây là mã của tôi:
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
...
Dưới đây là các lỗi:
Could not find stored procedure 'DELETE FROM myTable WHERE id = 1111'