用Exec方法是返回不了值的。实在不行用点笨方法,把它们写到临时库里再读出来吧。

解决方案 »

  1.   

    "用Exec方法是返回不了值的。" 错误!
      

  2.   

    可参考如下:declare @css nchar(100), @bb int
    select @bb = 29
    select @css = N'select @c = (@a+@b)/2'
    exec sp_executesql @css, N'@a int, @b int, @c int output', 10, 29, @bb output
    select @bb as bb 
      

  3.   

    简单一点:declare @css nchar(100), @bb int
    select @css = 'select @c = (@a+@b)/2'
    exec sp_executesql @css, '@a int, @b int, @c int output', 10, 29, @bb output
    select @bb as bb 通过系统存储过程sp_executesql执行动态的SQL命令(公式保存在@css), 这个动态的SQL共有3个参数, 2个参数为input, 1个为output.....
    declare @sx_sum int
    set @sum1='select @a = count(*) as sx_sum from givemainten_tab where equip_name = '+@eq_name
    exec sp_executesql @sum1, '@a int output', @sx_sum output
    ....这样, @xs_sum 就是你需要的一个count(*)值.
      

  4.   

    在set @sum1='select @a = count(*) as sx_sum from givemainten_tab where equip_name = '+@eq_name中,你加了@a=是什么意思?还有后面的sx_sum是不是你定义的@sx_sum,怎么用了=还用as,我看不明白,请加以解释,谢谢!!
      

  5.   

    count(*) as sx_sum 是没必要, 应该是set @sum1='select @a = count(*) from givemainten_tab where equip_name = '+@eq_name
      

  6.   

    可是现在出来个新的问题:执行时说我的@eq_name没有定义,要我先定义,@eq_name是游标当前行的记录,在游标中是不需要定义的,那它可不可以象我在语句中这样的用法,这样好象它是一个变量,但实际却没有定义,那我想得到这个@eq_name的值,我应该怎么解决呢?请指点
      

  7.   

    declare @sx_sum int, @qx_sum int
    declare @sumSQL varchar(100)
    declare @mainten_sum int declare statistic_cursor CURSOR for select  equip_name from equipments_tab
    open statistic_cursor
    FETCH NEXT FROM statistic_cursor INTO @eq_name
    WHILE(@@fetch_status=0)
    begin
        set @sumSQL = 'select @a = count(*) from givemainten_tab where equip_name = '''+@eq_name +''''
        exec sp_executesql @sumSQL, '@a int output', @sx_sum output    set @sumSQL = 'select @a = count(*) from gomainten_tab where equip_name = '''+@eq_name +''''
        exec sp_executesql @sumSQL, '@a int output', @qx_sum output    set @mainten_sum=sx_sum+qx_sum
        
        insert into statisticequip_tab values (@eq_name,@mainten_sum)    FETCH NEXT FROM statistic_cursor INTO @eq_name
    end
    close statistic_cursor
    deallocate statistic_cursor
      

  8.   

    nononono(null,null),我就是这样,我执行的时候出现了以下的错误提示:
    Cannot convert parameter '@statement' to ntext/nchar/nvarchar data type expected by procedure.
    这是什么错误提示???
      

  9.   

    这样试试:declare @sx_sum int, @qx_sum int
    declare @sumSQL nvarchar(100)
    declare @mainten_sum int declare statistic_cursor CURSOR for select  equip_name from equipments_tab
    open statistic_cursor
    FETCH NEXT FROM statistic_cursor INTO @eq_name
    WHILE(@@fetch_status=0)
    begin
        set @sumSQL = N'select @a = count(*) from givemainten_tab where equip_name = '''+@eq_name +''''
        exec sp_executesql @sumSQL, '@a int output', @sx_sum output    set @sumSQL = N'select @a = count(*) from gomainten_tab where equip_name = '''+@eq_name +''''
        exec sp_executesql @sumSQL, N'@a int output', @qx_sum output    set @mainten_sum=sx_sum+qx_sum
        
        insert into statisticequip_tab values (@eq_name,@mainten_sum)    FETCH NEXT FROM statistic_cursor INTO @eq_name
    end
    close statistic_cursor
    deallocate statistic_cursor 
      

  10.   

    declare @sx_sum int, @qx_sum int
    declare @sumSQL varchar(300),@NsumSQL nvarchar(300)
    declare @mainten_sum int declare statistic_cursor CURSOR for select  equip_name from equipments_tab
    open statistic_cursor
    FETCH NEXT FROM statistic_cursor INTO @eq_name
    WHILE(@@fetch_status=0)
    begin
        set @sumSQL = 'select @a = count(*) from givemainten_tab where equip_name = '''+@eq_name +''''
        set @NsumSQL = convert(nvarchar(300),@sumSQL)
        exec sp_executesql @NsumSQL, N'@a int output', @sx_sum output    set @sumSQL = 'select @a = count(*) from gomainten_tab where equip_name = '''+@eq_name +''''
        set @NsumSQL = convert(nvarchar(300),@sumSQL)
        exec sp_executesql @NsumSQL, N'@a int output', @qx_sum output    set @mainten_sum=sx_sum+qx_sum
        
        insert into statisticequip_tab values (@eq_name,@mainten_sum)    FETCH NEXT FROM statistic_cursor INTO @eq_name
    end
    close statistic_cursor
    deallocate statistic_cursor 
      

  11.   

    身边没有SQL的机器, 没办法试. 不知道上面这样行不行, 你试试吧.
      

  12.   

    这下可以了,谢谢!它对执行的语句一定要转化成nvarchar,ntext等等,而其他的则不行。谢谢你!请问你的联系方法,比如OICQ或者E—MAIL等,交个朋友,好吗???我的OICQ号码是7368845,E—MAIL为[email protected]
      

  13.   

    set @insertsql='insert into statistic_sb'+@user_id+' values('''+@eq_name+''','+@mainten_sum+')'
    execute(@insertsql)哪里错了, 提示为Syntax error converting the varchar value 'insert into statistic_sb29 values('计算机',' to a column of data type int.
      

  14.   

    类型转换错误呀!
    你的@insertsql是什么类型?,而@mainten_sum又是什么类型??set @insertsql='insert into statistic_sb'+@user_id+' values('''+@eq_name+''','+str(@mainten_sum)+')'
      

  15.   

    我解决了,要把‘+@mainten_sum+’改成'+convert(varchar(15),@mainten_sum)+')'就可以了。