从包含多个查询的存储过程返回值 [英] Return value from stored procedure containing multiple queries

查看:51
本文介绍了从包含多个查询的存储过程返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

ALTER PROCEDURE [dbo]。[InsertData1]



@Operation varchar(1),

- 其他参数 - - )

AS

BEGIN TRAN

设置NOCOUNT关闭;



如果@Operation ='A'

begin

INSERT INTO table1(---)values( - )

INSERT into table2( - )值( - )

IF(@@ ERROR<> 0)GOTO ERR_HANDLERUpdate

结束



其他如果@Operation ='B'

开始



---另一个更新查询----

如果出现(选择*来自Med,其中a = @ a)

开始

从Med删除a = @ a

end



INSERT到Med( - )值( - )

IF(@@ ERROR<> 0)GOTO ERR_HANDLERUpdate < br $> b $ b结束



COMMIT TRAN

返回1



ERR_HANDLERUpdate:

PRINT'发生意外错误!'

ROLLBACK TRAN

返回0



如果发生任何错误,我想返回0,如果所有查询成功执行没有任何错误,我想返回1.但是程序返回在过程中执行的查询次数。

如何检查过程是否成功执行并返回值..帮助我..

ALTER PROCEDURE [dbo].[InsertData1]
(
@Operation varchar(1),
--other parameters---)
AS
BEGIN TRAN
SET NOCOUNT off;

if @Operation = 'A'
begin
INSERT INTO table1 (---) values (--)
INSERT into table2(--)values(--)
IF (@@ERROR <> 0) GOTO ERR_HANDLERUpdate
end

else if @Operation = 'B'
begin

--- another update query----
IF EXISTS(Select * from Med Where a=@a)
begin
Delete from Med where a=@a
end

INSERT into Med(--)values(--)
IF (@@ERROR <> 0) GOTO ERR_HANDLERUpdate
end

COMMIT TRAN
RETURN 1

ERR_HANDLERUpdate:
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
RETURN 0

I want to return 0 if any error occurs and 1 if all querries executes successfully without any error.But the procedure is returning count of no of queries executed in procedure.
How to check if procedure is executes successfully and return value..Help Me..

推荐答案

定义一个输出参数,并根据需要将值传递给该参数



喜欢:



Define an output parameter and pass value to that parameter as you wish

like :

ALTER PROCEDURE [dbo].[InsertData1]
(
@Operation varchar(1),
@Result int output,
--other parameters---)
AS
.
.
.

COMMIT TRAN
Set @Result = 1;
 
ERR_HANDLERUpdate:
PRINT 'Unexpected error occurred!'
Set @Result = 0;
ROLLBACK TRAN





让我知道这是否有用:)



更新:如果您不想返回受查询/查询影响的行数没有

使用: 设置NoCount On

我只更新了解决错误所需的内容......所有其他代码应与原始代码保持一致。请再次检查...



如果有帮助,别忘了接受答案。


这篇关于从包含多个查询的存储过程返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆