一个存储过程嵌套调用问题?
CREATE PROCEDURE [dbo].[P1]
(
@ID VARCHAR(36),
@IsAudit BIT,
@GuID VARCHAR(36)= ' '
)
AS
BEGIN
IF EXISTS(SELECT 1 FROM A1 WHERE ID=@ID) and @IsAudit=1
BEGIN
SET @GuID = NewID()
INSERT INTO B1(ID,Name)
SELECT @GuID,Name FROM A1 WHERE ID=@ID
INSERT INTO B2(ID,Number,Price)
SELECT @GuID,Number,Price FROM A2 a where ID=@ID
END
EXEC P2 @GuID, @IsAudit
END
CREATE PROC dbo.[P2]
(@ID varchar(36),
@IsAudit bit
)
AS
--下面省略了很多条件与内容
BEGIN
INSERT INTO D
SELECT B1.*
FROM B1 WHERE B1.ID = @ID
END
问题:在存储过程P1中,EXEC P2 @GuID,@IsAudit这句前的对B1,B2表的插入正常,但进入P2后,对表D的插入则没有进行,是锁的问题还是其他问题,导致在B1中新插入的数据在P2中访问不到?
------解决方案--------------------应该能访问到的。
------解决方案--------------------使用PRINT or SELECT 一段一段的来调式看看。
没有数据无法说明问题出在哪里。