我想既当输入参数使用,也想当输出参数使用,可以这样用吗?另外是不是输出参数一定要在最后面,有没有限制的,谢谢

解决方案 »

  1.   

    create  procedure  yourP  
    @inp  int  ,@outp  int  output  
    as  
    set  @outp=@inp+100  
    return  @inp  
     
     
    -------  
    declare  @tt  int,@oo  int  
    exec  @tt=yourP  1,@oo    output  
     
    print  @tt    
    print  @oo  --楼主说的情况都没有限制,
    我想既当输入参数使用,也想当输出参数使用,可以这样用吗?
    可以,注意输入的值和输出的值也许不同(通过了计算)
      

  2.   

    if object_id('spTest') is not null
        drop proc spTest
    GO
    ----创建测试存储过程
    create proc spTest @inout varchar(10) output  
    as
    select @inout
    set @inout = 'Hello'
    GO----执行存储过程
    declare @str varchar(10)
    set @str = 'OK!'
    EXEC spTest @str output
    select @str----清除测试环境
    drop proc spTest
    /*结果1
    OK!
    */
    /*结果2
    Hello
    */
      

  3.   

    无法在 sysdepends 中添加当前存储过程所对应的行,因为缺少该存储过程所依赖的对象 'yourP'。仍将创建该存储过程。
      

  4.   

    create proc powerTest @param int output
    as
    select @param=power(@param, 2)
    return
    go--执行
    declare @i int
    set @i=5
    exec powerTest @param=@i output
    select @i
      

  5.   

    create  procedure  yourP  
    @inp  int  ,@outp  int  output  
    as  
    set  @outp=@inp+100+@outp  
    return  @inp  
     
    go 
    -------  
    declare  @tt  int,@oo  int  
    set @oo=9
    exec  @tt=yourP  1,@oo    output  
     
    print  @tt    
    print  @oo
      

  6.   

    create  procedure  yourP  
    @inp  int  ,@outp  int  output  
    as  
    set  @outp=@inp+100  
    --return  @inp  
    go
     
    -------  
    declare  @tt  int,@oo  int  
    exec  @tt=yourP  1,@oo    output  
     
    print  @tt    
    print  @oo  drop procedure  yourP 
    go
      

  7.   

    create  procedure  yourP1  
    @inoutp  int  output  
    as  
    set  @inoutp=@inoutp+100  
    return  @inoutp  
    go
     
    -------  
    declare  @tt  int 
    set @tt=5
    print @tt
    exec  @tt=yourP1  @tt  output  
     
    print  @tt    
     drop procedure  yourP1
    go--对比着两个
      

  8.   

    create  procedure  yourP  
    @outp  int  output  ,@inp  int  
    as  
    set  @outp=@inp+100+@outp  
    return  @inp  
     
    go 
    -------  
    declare  @tt  int,@oo  int  
    set @oo=9
    exec  @tt=yourP  @oo    output,1
     
    print  @tt    
    print  @oo