1. 程式人生 > >儲存過程巢狀儲存過程

儲存過程巢狀儲存過程

這就是一個坑,埋葬了我的至少5個小時

我非常的後悔,我為什麼如此的優秀,但是沒有辦法, 最後通過和丁雨老師的一起努力找Bug,我們終於找到了原因所在,我非常佩服丁雨老師的耐心,可能我現在已經被這個浮躁的社會影響了,做事情都在急功近利,就像炒股一樣,就喜歡玩短線。沒有耐心去找到Bug,但是丁雨老師太有耐心了,我自己都要放棄了,不去搞儲存過程的巢狀,放棄程式碼的複用性,但是在丁雨老師的指導下,依舊換案例,找到Bug原因。最後鎖定Bug,巢狀過程返回資料,這是一個好大的坑,我不知道說一些什麼比較好呢?總算是解決了這個問題。

我的測試程式碼如下

檢視儲存過程的巢狀是否在執行

C
REATE PROCEDURE proc_randNumber01
@number INT OUTPUT
AS
BEGIN
SET @number = RAND() * 100
print @number
END
SELECT @number;

DECLARE @num INT
EXEC proc_randNumber01 @num

CREATE PROCEDURE proc_numberAddNumber03
@number0 INT OUTPUT
AS
BEGIN
DECLARE @numberI INT
DECLARE @numberII INT
EXEC proc_randNumber01 @numberI OUT
print @numberI
EXEC proc_randNumber01 @numberII OUT
PRINT @numberII
SET @number0 = @numberI + @numberII
END
SELECT @number0;

DECLARE @num INT
EXEC proc_numberAddNumber03 @num

我們確定了儲存過程的巢狀的過程是可以執行的

只是我無法吧值帶出來

那麼問題來了:如何為把值帶出被巢狀的儲存過程

這是設我們的答案

C
REATE PROCEDURE proc_randNumber01
@number INT OUTPUT
AS
BEGIN
SET @number = RAND() * 100
print @number
END
SELECT @number;

DECLARE @num INT
EXEC proc_randNumber01 @num

CREATE PROCEDURE proc_numberAddNumber03
@number0 INT OUTPUT
AS
BEGIN
DECLARE @numberI INT
DECLARE @numberII INT
EXEC proc_randNumber01 @numberI OUT
print @numberI
EXEC proc_randNumber01 @numberII OUT
PRINT @numberII
SET @number0 = @numberI + @numberII
END
SELECT @number0;

DECLARE @num INT
EXEC proc_numberAddNumber03 @num

這個儲存過程是為了計算倆個隨機數的和

謝謝!

再次感謝丁雨老師