天天看點

存儲過程的三種傳回值與其獲得方法

CREATE TABLE [dbo].[Order](  

[o_id] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,  

[o_buyerid] [int] NOT NULL 

)  

1.OUPUT參數傳回值  

例: 向Order表插入一條記錄,傳回其辨別  

CREATE PROCEDURE [dbo].[nb_order_insert](  

@o_buyerid int ,  

@o_id bigint OUTPUT 

AS 

BEGIN 

SET NOCOUNT ON;  

INSERT INTO [Order](o_buyerid )  

VALUES (@o_buyerid )  

SET @o_id = @@IDENTITY  

END 

存儲過程中獲得方法:  

DECLARE @o_buyerid int 

DECLARE @o_id bigint 

EXEC [nb_order_insert] @o_buyerid ,o_id bigint 

2 RETURN過程傳回值  

IF(EXISTS(SELECT * FROM [Shop] WHERE [s_id] = @o_shopid))  

RETURN 1 — 插入成功傳回1  

ELSE 

RETURN 0 — 插入失敗傳回0  

存儲過程中的擷取方法  

DECLARE @result bit 

EXEC @result = [nb_order_insert] @o_buyerid ,o_id bigint 

3.SELECT 資料集傳回值  

CREATE PROCEDURE [dbo].[nb_order_select](  

@o_id int 

SELECT o_id,o_buyerid FROM [Order]  

WHERE o_id = @o_id  

GO  

存儲過程中的擷取方法:  

3.1使用臨時表  

CREATE TABLE [dbo].[Temp](  

INSERT [Temp] EXEC [nb_order_select] @o_id  

– 這時 Temp 就是EXEC執行SELECT 後的結果集  

SELECT * FROM [Temp]  

DROP [Temp] — 删除臨時表  

3.2使用openrowset(不過就是速度不怎麼樣)  

SELECT * from openrowset(’provider_name','Trusted_Connection=yes’,'exec nb_order_select’)  

本文轉自sucre03 51CTO部落格,原文連結:http://blog.51cto.com/sucre/380219,如需轉載請自行聯系原作者