一直以来有个问题不清楚,就是在SQL的存储过程中,定义一个OUTPUT参数,和使用RETURN直接返回值,两者之间究竟有什么区别,各自在使用上有什么特别需要注意的地方。
比如:
CREATE PROCEDURE [dbo].[ABC]
DECLARE @Result INT OUTPUT
   .
   .
   .
其他SQL语句
   .
   .
   .SET @Result = -1

RETURN -1
的区别。是不是还和调用存储过程那里的程序设计有关?

解决方案 »

  1.   

    RETURN
    从查询或过程中无条件退出。RETURN 即时且完全,可在任何时候用于从过程、批处理或语句块中退出。不执行位于 RETURN 之后的语句。
    返回的整型值。存储过程可以给调用过程或应用程序返回整型值除非特别指明,所有系统存储过程返回 0 值表示成功,返回非零值则表示失败。当用于存储过程时,RETURN 不能返回空值。如果过程试图返回空值(例如,使用 RETURN @status 且 @status 是 NULL),将生成警告信息并返回 0 值。
      

  2.   

    output可以返回多个值,其类型也是多样性的
    而return只返回int型,其值在编程中一般用来表示存储过程的执行状态
      

  3.   

    用输出参数output可以输出任意类型的结果(不包括表类型),而return只能返回整型并且总能返回一个整型值。一般的return用来终止存储过程的进行并返回。所以return一般返回的值是0。而输出参数的话,就类似于其他编程语言里的按照地址传送的参数那样,大同小异。