从包含多个查询的存储过程返回值 [英] Return value from stored procedure containing multiple queries
问题描述
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屋!