儲存過程巢狀儲存過程
阿新 • • 發佈:2018-12-21
這就是一個坑,埋葬了我的至少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
這個儲存過程是為了計算倆個隨機數的和
謝謝!
再次感謝丁雨老師