CREATE PROCEDURE WF_ADDROLE @ClassName nvarchar(50)
as
declare @ExistFlag int
select @ExistFlag=RoleID from WF_Role where RoleName=@ClassNameif @Exist is null
begin
    insert into WF_role(RoleName) values(@ClassName)
    select @@IDENTITY as returnFlag
end
else
    select 0 as returnFlagRETURN 0
GO请问RETURN 0是什么意思,还有我看到很多存储过程无论是需要返回值还是不需要都有一个RETURN 0
这个东西是做什么用的
这里明显需要返回的是returnFlag  怎么不用RETURN returnFlag???
我翻了好几本书也没找到有介绍这个东西的
小弟初学,很多不懂,成心请教,谢谢各位!

解决方案 »

  1.   

    RETURN语句用于无条件的退出存储过程。RETURN之后的任何语句都不再执行。RETURN语句可以给调用语句返回一个值,但不能返回NULL值。SQL Server经常为存储过程返回一个状态值。如果成功地执行,则返回一个0,如果出现了错误,则返回一个为负数的错误码。 RETURN返回的是存储过程的运行状态,returnFlag已经在select @@IDENTITY as returnFlag这样的语句里返回了
      

  2.   

    RETURN 0是无条件退出存储过程,表示这个存储过程已经结束,指示系统退出。
    而存储过程返回的值(一个记录集、一个字段、或者一个数字)是在select @@IDENTITY as returnFlag或select 0 as returnFlag里返回了,而不是return 0返回给调用存储过程的cmd.
      

  3.   

    非常感谢goodtoyou(ALLLLL),tomtown530(梦想一定会实现!) 2位朋友的回答..
    现在明白了,谢谢!