一段存储过程语句,不理解的是return 1,return 2,return 3在语句中有什么作用啊
if(select 是否借出 from Books where 图书编号=@BookID)=1
begin
print'图书已借出,不能借'
return 1
endif(@BorrowNum>=@BorrowDureNum)
begin
print'借书数量已满,不能再借'
return 2
endif exists (select * from Borrow where 读者编号=@ReaderID and 
datediff(day,应还日期,getdate())>0)
begin
print'有过期未还图书,不能借'
return 3
end

解决方案 »

  1.   

    从查询或过程中无条件退出。RETURN 的执行是即时且完全的,可在任何时候用于从过程、批处理或语句块中退出。RETURN 之后的语句是不执行的。 如果用于存储过程,RETURN 不能返回空值。如果某个过程试图返回空值(例如,使用 RETURN @status,而 @status 为 NULL),则将生成警告消息并返回 0 值。USE AdventureWorks;
    GO
    CREATE PROCEDURE checkstate @param varchar(11)
    AS
    IF (SELECT StateProvince FROM Person.vAdditionalContactInfo WHERE ContactID = @param) = 'WA'
        RETURN 1
    ELSE
        RETURN 2;
    GO
    DECLARE @return_status int;
    EXEC @return_status = checkstate '2';
    SELECT 'Return Status' = @return_status;
    GO
      

  2.   

    return 终止执行return之后的所有语句,并状态返回值
      

  3.   

     终止执行return之后的语句