在存储过程中给一个变量赋值的语句是select @goodsname=(select goodsname from T_Goods where goodscode=@goodscode) 
但现在我想实用给两个变量赋值,语句却不能这样写:select @goodsname,@other=(select goodsname,other from T_Goods where goodscode=@goodscode)
我又不想分成两条语句来写,因为数据集打开关上我担心会影响速度.请问这样的语句该怎么写?

解决方案 »

  1.   

    select @other=(select goodsname,other from T_Goods where goodscode=@goodscode)
    set @goodsname = @other
      

  2.   

    楼上的,您的方法不行吧.
    @goodsname,@other是两个不同的变量,要从两个不同的字段取值.你这样做这两个变量的值不是一样了吗?
      

  3.   

    试试select...into...  语句呢
      

  4.   

    select @goodsname=goodsname,@other=other from T_Goods where goodscode=@goodscode
      

  5.   

    谢谢 anbangs(菜鸟邦)
    昨天我后来又遇到一个问题,关于in语句的.
    比如select Goodscode from T_Goods where GoodsCode in('001','002') 这样是可以的.
    而我把edit的text值为'001','002'作为参数传递进去就不行.Why?
      

  6.   

    select Goodscode from T_Goods where GoodsCode in (@p0,@p1)就可以了 
      

  7.   

    select @goodsname=goodsname,@other=other from T_Goods where goodscode=@goodscode
    上面人不是说清楚了吗
      

  8.   

    Tonotear00(泪无痕) 能不能只用一个变量呢?因为有时可能带进去的参数很多,所以希望能用一个变量就能搞定.
      

  9.   

    declare @SQL varchar(8000)
    set @sqL='select Goodscode from T_Goods where GoodsCode in (' +  @P + ')'
    execute(@SQL)
      

  10.   

    楼上的,你的用法通不过吧,拷进存储过程里,select Goodscode from T_Goods where GoodsCode in 这一段都成了红色的.
    还有人能解答吗?
      

  11.   

    select Goodscode from T_Goods where Charindex(T_Goods, @P)>0
      

  12.   

    楼上的,您这样的方法可以吗?应该是这样的吧
    select Goodscode from T_Goods where Charindex(GoodsCode, @P)>0
      

  13.   

    =====================================
    fancylee(小恐龙)
    declare @SQL varchar(8000)
    set @sqL='select Goodscode from T_Goods where GoodsCode in (' +  @P + ')'
    execute(@SQL)
    ==============================================
    这个方法是可以的,因为你要传一个字符串进去,只能用这种方法把它解释成SQL语句,这也是一种常用的方法,不过注意你传进的参数@P必须如'001','002'中间的“,“不能少,引号就看你传的是什么类型,字符串就要,其它的看着办
      

  14.   

    to ujjcel():
    呵呵!如您所说,是我写错了
      

  15.   

    create table t(a varchar(20),b int)
    insert into t select '001',1
    union select '002',2
    union select '003',3--动态sql测试
    declare @s varchar(40),@sql varchar(400)
    set @s = '001,002'
    set @sql='select * from t where charindex(a,'''+@s+''')>0'
    print @sql
    exec (@sql)--结果
    a                    b           
    -------------------- ----------- 
    001                  1
    002                  2--存储过程测试
    create proc p_t(@s varchar(40))
    as
    begin
      declare @sql varchar(400)
      set @sql='select * from t where charindex(a,'''+@s+''')>0'
      exec (@sql)  
    end
    exec p_t '001,002'
    --结果
    a                    b           
    -------------------- ----------- 
    001                  1
    002                  2(所影响的行数为 2 行)