如何检查SELECT查询是否成功?

时间:2015-12-28 08:57:14

标签: sql sql-server stored-procedures

我是SQL的新手,我刚刚读到,存储过程始终返回一个值,确定过程中的查询是否已成功执行,这是一个很好的做法。
所以我有一个简单的存储过程,其中包含一个select语句,如果它被执行则我想返回1,如果没有则返回-1。
你能告诉我如何用SQL编写这个条件吗? 如果重要我的数据库是MS SQL Server 谢谢。

CREATE PROCEDURE myTest   
AS  
BEGIN  
    SELECT FirstName,LastName FROM Employees  
    RETURN 1 (If execution is successfull)  
    RETURN -1(If execution is not successfull)  
END;  

5 个答案:

答案 0 :(得分:3)

使用输出参数返回成功状态以及Try..Catch块

CREATE PROCEDURE myTest 
 @Result INT OUTPUT  
AS  
BEGIN  
  SET NOCOUNT ON;

  BEGIN TRY
     SELECT FirstName,LastName FROM Employees  
     SET @Result = 1;
  END TRY  

  BEGIN CATCH
     SET @Result = 0;
  END CATCH

END;  

答案 1 :(得分:2)

Create Procedure testproc
as 
select * from  tabletest
if @@error<>0
 return -1
else 
 return 0

这应该没问题,如果select语句失败,那么@@ error变量将被设置为某个值,因此procedure将返回-1值。

谢谢

答案 2 :(得分:1)

@@ ROWCOUNT此命令有用,表示有效的行号。

return @@ROWCOUNT

你只需要这样做。如果结果&gt; 0,成功,如果没有,失败。

答案 3 :(得分:1)

取决于您的存储过程逻辑。如果知道行数,可以使用@@ ROWCOUNT变量。如果您的代码可能引发异常,您可以使用BEGIN TRY ... BEGIN CATCH块。

答案 4 :(得分:0)

要确定是否存在匹配的行,您可以使用    NOT EXISTS

CREATE PROCEDURE myTest   
AS  
BEGIN  
IF NOT EXISTS(select FirstName,LastName FROM Employees)
BEGIN
PRINT 'No Match Found'
END