У меня проблема с процедурой SQL Server.
У меня есть две новые хранимые процедуры, когда процесс PROC_Main выполняет несколько операций вставки и обновления перед вызовом PROC_child чтобы вытащить обновленные записи обратно.
--Child PROC
CREATE PROCEDURE dbo.Proc_Child
@Id int
AS
BEGIN
SELECT * FROM dbo.Employee WHERE Id = @Id AND Status=1
END
--Parent Proc
CREATE PROCEDURE dbo.Proc_Main
@Id int ,@Status varchar(100),@Date datetime
AS
BEGIN
BEGIN TRY
BEGIN TRAN
IF NOT EXISTS (SELECT Id FROM dbo.Employee WHERE Id = @Id)
BEGIN
UPDATE dbo.Employee
SET Status = 3,
Date = getdate()
WHERE Status <> 3
AND Id = @Id
INSERT INTO dbo.Employee (ID,Status,Date)
VALUES (@ID,@Status,@Date)
END
COMMIT
--CHECKPOINT;
EXEC dbo.Proc_Child @Id = @Id
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRAN
DECLARE @Message VARCHAR(1000) = ERROR_MESSAGE()
DECLARE @Severity INT = ERROR_SEVERITY()
DECLARE @State INT = ERROR_STATE()
RAISERROR(@Message, @Severity, @State)
END CATCH
END
--Procedure call
EXEC Proc_Main @ID=1,@Status=1,@Date='2019-01-01'
Я сталкиваюсь с проблемой, что Proc_Main не возвращает записи из PROC_Child каждый раз.
Когда я выполняю контрольную точку вручнуюперед вызовом Proc_Child только записи возвращаются.