场景:对数据库进行一些复杂的运算,或者是最普通的对增删改查.
目的:方便前端应用程序(C#,delphi)能准确判断出存储过程中的代码是否执行成功。
注意:我的每个存储过程中都会有
set nocount on
declare @error int  set @error = 0;
这两行代码

方法1:create proc test
(
@parm1 ...,
@parm2 ...,
@parm3 ...,
@result int output
)
as
begin
   set nocount on
   declare @error int  set @error = 0;
   ......
   set @result = 1
end方法2:create proc test
(
@parm1 ...,
@parm2 ...,
@parm3 ...
)
as
begin
   set nocount on
   declare @error int  set @error = 0;
   ......
   set @result = 1
   RETURN @error
end
请问:哪种写法更加优雅?若全部不优雅,请讲给你认为优雅的写法(需要方便前段程序方便判断存储过程是否执行成功)?

解决方案 »

  1.   

    补充:
    是通过方法1中的@result output来判断执行是否成功呢?还是通过方法2中的@error来判断执行是否成功呢?哪种优雅些。呵呵。
      

  2.   

    呵呵,这话.....为什么我提该问题?原因是:我个人认为c#中用ExecuteScalar或ExecuteNonQuery方法来判断存储过程是否执行成功,总感觉有点别扭。(有时返回-1,有时返回>1的值)我是希望每个存储的返回值有一个统一的标准,方便c#程序员统一判断存储过程是否执行成功了。
      

  3.   


    当C#程序员与DBA开发人员之间有一个良好的契约时,整个team跳起舞来才协调。
      

  4.   

    当C#程序员与DBA开发人员之间有一个良好的契约时,整个team跳起舞来才协调。
    对于存储过程返回值,有统一的标准。
    原因是:我个人认为c#中用ExecuteScalar或ExecuteNonQuery方法来判断存储过程是否执行成功,总感觉有点别扭。(有时返回-1,有时返回>1的值)
      

  5.   

    换句话说,优雅的标准是美。如同你在CSDN中的图像上的女人一样,非常漂亮。
      

  6.   

    头一次听说写SQL要优雅的,楼主是个高雅清新的人啦!效率高就可以了,格式什么的自己注意下,顺手顺眼就OK。
      

  7.   

    oracle都艺术了,SQL优雅点也是可以的。
      

  8.   

    我是提问者。没错,是一个非常细节性的问题。应用程序是c#写的。团队中有c#组和DB组,为了使两个组跳舞时能更加协调。我希望每个存储过程都有一个返回值。(如:0是成功,其它值是失败)注:若在存储过程中没有返回值,c#中用ExecuteScalar或ExecuteNonQuery有时返回-1,有时返回大等于1的值。这样一样,就显得不够统一。
      

  9.   

    我是来看优雅的觉得自然就优雅,从自然来说,return适合反映存储过成执行状态,包括返回成功、失败代码等
    output参数从自然来说时返回数据的,所以应该在返回数据时使用。搂主的情况,显然是返回执行状态的,用return自然,也就优雅了,至于会不会跳舞,我不知道
      

  10.   


    是优雅两个字用得不恰当吗?主要使c#组与DB开发组之间有一个良好的编码习惯。形成一种好的契约而已。呵呵!至于“跳舞”二字,你忽略掉就行。