[英]embedding a call to a stored procedure with in a transaction that contains dynamic sql
[英]Managing transaction in stored procedure with Dynamic SQL
我有一個動態SQL存儲過程。 根據@@ERROR
的值,是否可以在帶有COMMIT
或ROLLBACK
的顯式事務中包含一批動態SQL? 遵循類似的存儲過程。 為了演示目的對其進行了簡化。
CREATE PROCEDURE [dbo].[sp_Example]
AS
BEGIN
BEGIN TRANSACTION
DECLARE @ID VARCHAR(10)
INSERT INTO [dbo].[Deparment] (Name,Location,PhoneNumber) VALUES ('DeparmentName','DeparmentLocation','0112232332')
SELECT @ID =SCOPE_IDENTITY()
IF @@ERROR <> 0
BEGIN
ROLLBACK
RAISERROR ('Error in Inserting Deparment.', 16, 1)
RETURN
END
SET @InsertQuery = '
DECLARE @Name varchar(100)
SELECT @Name = Name
FROM dbo.[Deparment]
WHERE DepartmentId= ''' + @ID +'''
INSERT INTO [dbo].[Employee](Name,Age,Salary,DepartmentName)VALUES(''EMPLOYEE NAME'',''25'',''200000'','''+@NAME'')''
EXEC(@InsertQuery)
IF @@ERROR <> 0
BEGIN
ROLLBACK
RAISERROR ('Error in Inserting Employee.', 16, 1)
RETURN
END
COMMIT
END
外部事務范圍適用於動態查詢嗎?
“外部”事務將適用於所執行的所有操作。 SQL Server中無法在正在運行的事務下不執行(這可能使您想記錄錯誤很煩惱)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.