您的位置:首页 > 数据库

sqlserver,获取调用存储过程返回数据的方法。

2017-08-14 15:20 681 查看
1,获取存储过程最后select返回的结果集。SELECT 数据集返回值

因为select返回的结果是一个表。所以返回的结果需要用一个表接收。使用临时表接收。

被调用的存储过程最后是这样:返回了一个空标题的字段。



什么都不处理,调用存储过程,发现是这样:

ALTER PROCEDURE [LC0**999].[ERP_***_CreateBatchCode]
(
@MaterialID  varchar(50),
@CompanyID   varchar(50),
@Flag        varchar(50),
@PrefixObj   varchar(50)
)
AS
BEGIN
declare @v_batchcode varchar(36);
exec @v_batchcode=erp_IM_BatchesSN_CreateCode @MaterialID,@CompanyID,@Flag,@PrefixObj;

select @v_batchcode BATCHCODE;
END


执行结果:



会发现返回了三个数据集,不仅原来的存储过程会返回一个数据集(这里的情况是不需要那个存储过程返回,而是赋值给变量,由变量返回),这里调用原来的存储过程也并没有真正赋值给变量。所有返回的变量的值仍然为空。

我们真正的需求是只返回一个被赋值了的BATCHCODE。

修改:用临时表接收返回结果集,把临时表的相关字段赋值给变量。如下:

ALTER PROCEDURE [LC00****].[ERP_****_CreateBatchCode]
(
@MaterialID  varchar(50),
@CompanyID   varchar(50),
@Flag        varchar(50),
@PrefixObj   varchar(50)
)
AS
BEGIN

declare @v_batchcode varchar(36);

CREATE TABLE [LC0019999].[batchtemp](
batchcode    varchar(36)
)

INSERT batchtemp exec @v_batchcode=erp_IM_BatchesSN_CreateCode @MaterialID,@CompanyID,@Flag,@PrefixObj;

SELECT @v_batchcode=batchtemp.batchcode FROM batchtemp;

DROP TABLE batchtemp;

select @v_batchcode BATCHCODE;

END


执行结果:



可见,被调用的存储过程没有返回一个select结果集,并且,值被成功的赋值给变量。只返回了一个数据集。

2,OUPUT参数返回值

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 output


3,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_buyerid ))
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 output
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐