我新建了一个存储过程,如下:
CREATE PROCEDURE sp_Transfer
            @oldtel varchar(20),
            @newtel varchar(20)
AS
declare   @sl   varchar(255)
declare   @oldmoney   money
set @sl='select money  from  table1 where   tel='''+@oldtel+'''
exec(@sl) 在这里如何取出money的值并赋给@oldmoney????????? update table1 set money=money+@oldmoney where tel=@newtel                 update table1 set money=0 where tel=@oldtel
print '转帐成功!'
GO

解决方案 »

  1.   


    set @sl='select @oldmoney = money  from  table1 where  tel='''+@oldtel+''' 
      

  2.   

    不行啊,提示:必须声明变量 '@oldmoney'。
      

  3.   

    EXECUTE sp_executesql @sl,N'@oldmoney varchar(6) OUTPUT',@oldmoney  output
      

  4.   

    还是不行啊,提示:过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型。
      

  5.   


    CREATE PROCEDURE sp_Transfer 
                @oldtel varchar(20), 
                @newtel varchar(20) 
    AS 
    declare  @sl  nvarchar(MAX)  --改为NVARCHAR(MAX) 
    declare  @oldmoney  money 
    set @sl='select money  from  table1 where  tel='''+@oldtel+''' 
    EXECUTE sp_executesql @sl,N'@oldmoney  money  OUTPUT',@oldmoney  outputupdate table1 set money=money+@oldmoney where tel=@newtel                 update table1 set money=0 where tel=@oldtel 
    print '转帐成功!' 
      

  6.   


    create PROCEDURE sp_Transfer 
                @oldtel varchar(20), 
                @newtel varchar(20) 
    AS 
    declare  @sl  varchar(MAX)  --改为NVARCHAR(MAX) 
    declare  @oldmoney  money 
    set @sl='select money  from  table1 where  tel='''+@oldtel+''''
    EXECUTE sp_executesql @sl,N'@oldmoney  money  OUTPUT',@oldmoney  outputupdate table1 set money=money+@oldmoney where tel=@newtel                 
    update table1 set money=0 where tel=@oldtel 
    print '转帐成功!' 
      

  7.   

    7楼,不行的,提示:服务器: 消息 170,级别 15,状态 1,过程 sp_Transfer2,行 6
    第 6 行: 'MAX' 附近有语法错误。
    服务器: 消息 170,级别 15,状态 1,过程 sp_Transfer2,行 9
    第 9 行: '@oldmoney' 附近有语法错误。
    服务器: 消息 105,级别 15,状态 1,过程 sp_Transfer2,行 12
    字符串 ' 
      

  8.   

    create table table1([money] money,tel varchar(10))
    insert into table1 values(22,'aa')
    insert into table1 values(22,'bb')ALTER PROCEDURE sp_Transfer 
                @oldtel varchar(20), 
                @newtel varchar(20) 
    AS 
    declare  @sl  nvarchar(8000)  --改为NVARCHAR(8000) 
    declare  @oldmoney  money 
    set @sl='select @oldmoney=money  from  table1 where  tel='''+@oldtel+''''
    EXECUTE sp_executesql @sl,N'@oldmoney  money  OUTPUT',@oldmoney  outputupdate table1 set money=money+@oldmoney where tel=@newtel                 
    update table1 set money=0 where tel=@oldtel 
    print '转帐成功!' EXEC sp_Transfer 'aa','aa'
    /*(1 行受影响)(1 行受影响)
    转帐成功!*/