我是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;
答案 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