CREATE TABLE [dbo].[Order](
[o_id] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[o_buyerid] [int] NOT NULL
)
1.OUTPUT參數傳回值
例: 向Order表插入一條記錄,返回其標識
CREATE PROCEDURE [dbo].[nb_order_insert](
@o_buyerid int ,
@o_id bigint OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN
INSERT INTO [Order](o_buyerid )
VALUES (@o_buyerid )
SET @o_id = @@IDENTITY
END
END
預存程序中獲得方法:
DECLARE @o_buyerid int
DECLARE @o_id bigint
EXEC [nb_order_insert] @o_buyerid ,o_id bigint
2.RETURN過程傳回值
CREATE PROCEDURE [dbo].[nb_order_insert]
(
@o_buyerid int
,
@o_id bigint
OUTPUT
)
AS
BEGIN
SET NOCOUNT ON
;
IF(EXISTS(SELECT * FROM [Shop] WHERE [s_id] = @o_shopid
))
BEGIN
INSERT INTO [Order]
(o_buyerid )
VALUES (@o_buyerid
)
SET @o_id = @@IDENTITY
RETURN 1
— 插入成功返回1
END
ELSE
RETURN 0
— 插入失敗返回0
END
預存程序中的擷取方法DECLARE @o_buyerid int
DECLARE @o_id bigint
DECLARE @result bit
EXEC @result = [nb_order_insert] @o_buyerid ,o_id bigint
3.SELECT 資料集傳回值
CREATE PROCEDURE [dbo].[nb_order_select]
(
@o_id int
)
AS
BEGIN
SET NOCOUNT ON
;
SELECT o_id,o_buyerid FROM [Order]
WHERE o_id = @o_id
GO
預存程序中的擷取方法
(1)、使用暫存資料表的方法
CREATE TABLE [dbo].[Temp](
[o_id] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[o_buyerid] [int] NOT NULL
)
INSERT [Temp] EXEC [nb_order_select] @o_id
– 這時 Temp 就是EXEC執行SELECT 後的結果集
SELECT * FROM [Temp]
DROP [Temp] — 刪除暫存資料表
(2)、速度不怎麼樣.(不推薦)
SELECT * from openrowset(’provider_name','Trusted_Connection=yes’,'exec nb_order_select’)