在存储过程中,我有一写代码需要重复调用,有类似于vb中sub子函数的用法么 ?
在 SQL2000中如何实现?
我只找到Goto label
是否有其它方法?

解决方案 »

  1.   

    if object_id('pro1') is not null
          drop proc pro1
    if object_id('pro2') is not null
          drop proc pro2
    if object_id('tbtest') is not null
          drop table tbtest
    GO
    create table tbtest(id int identity(1,1),name varchar(20))
    insert tbtest(name) 
    select 'x' union all
    select 'myname' union all
    select 'myname' union all
    select 'yourname' union all
    select 'myname'
    select * from tbtest
    GO
    ----创建存储过程1
    create proc pro1 @a varchar(16) = null,@returnvalue int=null output
    as
          select @returnvalue = max(id) from tbtest where name = @a
    GO
    ----创建存储过程2(在该存储过程中调用存储过程1)
    create proc pro2 @cmd nvarchar(4000)
    as
    declare @r int
          set @r = 0
          exec sp_executesql @cmd,N'@r int output',@r output
          select @r
    GO----调用存储过程2
    declare @cmd Nvarchar(4000)
    --set @cmd = 'exec pro1 ''myname'',@r output'
    set @cmd = 'exec pro1 @a=''myname'',@returnvalue=@r output'--效果同上一条语句
    exec pro2 @cmd----清除测试环境
    drop proc pro1,pro2
    drop table tbtest
      

  2.   

    gc_ding(E.T)pro1,和 pro2 如果不 drop的话,在存储过程查看器中,其实还是新建了2个存储过程是么 ?只是最后把用完的 pro2  drop了 基本等于没有创建.还有其它办法么 ?
      

  3.   

    我说的是SQL里面的自己定义的函数