1. 程式人生 > >SQL SERVER 存儲過程中SELECT 返回值如何賦值給變量

SQL SERVER 存儲過程中SELECT 返回值如何賦值給變量

資料 開心 d+ server 問題 一個表 procedure insert 結果

今天在處理一個問題時,使用到一個存儲過程,是用於更新並獲取最新ID的。在使用過程中,需要獲取到這個ID並賦值給變量,結果用EXEC @ID = 存儲過程的方式獲取失敗了。具體情況如下:

為了還原整個情況,先要做一些準備工作,首先,建立一個表,只有一個字段就是ID,並且插入一條數據
CREATE TABLE TABLE1
(
ID INT
)
GO
INSERT INTO TABLE1
VALUES(1)

然後建立一個存儲過程
CREATE PROCEDURE P_GETID
AS
BEGIN
UPDATE TABLE1 SET ID = ID+1
SELECT ID FROM TABLE1
END

其實說實話,這個存儲過程真的沒明白為啥非要這樣寫,用輸出函數或者return變量都好呀,可是沒辦法,還就得用這個存儲過程。當然,也可以直接把這兩句弄出來直接用,
不過,誰讓咱非要鉆這個牛角尖來著。接著來吧。
開始使用EXEC @變量 = 存儲過程 這種語句發現,沒有成功。

郁悶啊,惆悵啊,糾結呀。這是啥情況呢?後來想明白了,這是返回的結果集,賦值給變量貌似真的會有問題的呢。
那這個存儲過程返回的值怎麽獲取呢?
查了N多資料,看了好多有的沒的,突然想起來用個表變量中轉一下不就得了?

於是,開始嘗試

首先聲明一個表類型的變量,表結構和返回的結果集一樣,
然後將存儲過程返回的結果集插入到表變量中,

最後,從表變量查詢字段賦值給變量。這樣就可以了。

首先,我要說,這個存儲過程的確夠坑的,大家如果只是返回一個值,千萬別用這種方式。
不過,能解決問題還是蠻開心的,真心漲知識了。

SQL SERVER 存儲過程中SELECT 返回值如何賦值給變量