Bir tablonun silme işlemini çağırmam gerekir; bu adın adı yalnızca çalışma zamanında bilinir.EXEC() çağrısı hata üretir: saklı yordamı bulamadı
Silme deyimini dinamik olarak, tablename ve ölçütlerle formüle eden bir saklı yordamım var ve sonra bu dizgeyi EXEC() işlevine bir argüman olarak iletir (bunun bir kısmı açık bir şekilde, bir işlem içerisindedir).
Saklı yordamı çalıştırdığımda hata alıyorum - saklı yordamı bulamadım - dinamik olarak formüle ettiğim ve EXEC() öğesine gönderdiğim ifadeye bakarak.
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
...
İşte hata var: parantez olmadan
Could not find stored procedure 'DELETE FROM myTable WHERE id = 1111'