在一个存储过程中,有如下代码
DECLARE @CKDMSQL nvarchar(200)
DECLARE @CKDM nvarchar(100)
SET @CKDMSQL='select SHCode from tb_storehouse'SET @CKDM=execute sp_executesql @CKDMSQL我想将执行@CKDMSQL变量中的SQL语句后得到的数据用@CKDM保存起来,请问如何操作呢?

解决方案 »

  1.   

    用臨時表或表變量獵取,或用XML變量
      

  2.   

    DECLARE @CKDMSQL nvarchar(200)
    DECLARE @CKDM nvarchar(100)
    SET @CKDMSQL='select SHCode from tb_storehouse'DECLARE @T TABLE(SHCode NVARCHAR(50))
    INSERT @T execute sp_executesql @CKDMSQLSELECT * FROM @T
      

  3.   

    2楼代码提示错误:无法在向表插入变量时将 EXECUTE 用作源。
      

  4.   

    DECLARE @CKDMSQL nvarchar(200)
    DECLARE @CKDM nvarchar(100)
    SET @CKDMSQL='select SHCode from tb_storehouse'DECLARE @T TABLE(SHCode NVARCHAR(50))
    INSERT @T exec(@CKDMSQL)
    SELECT * FROM @T
      

  5.   

    本帖最后由 roy_88 于 2011-06-16 10:10:34 编辑
      

  6.   

    DECLARE @CKDMSQL nvarchar(200)
    DECLARE @CKDM nvarchar(100)
    SET @CKDMSQL='select top 5 Name from sysobjects'DECLARE @T TABLE(SHCode NVARCHAR(50))
    INSERT @T execute sp_executesql @CKDMSQLSELECT * FROM @T/*
    sysrowsetcolumns
    sysrowsets
    sysallocunits
    sysfiles1
    syshobtcolumns
    */以系統表為例 
      

  7.   

    我现在只要获得那个值就行了,我就把你的代码放上去就提示那样 的错误:和你一模一样的:
    DECLARE @CKDMSQL nvarchar(200)SET @CKDMSQL='select SHCode from tb_storehouse 
    WHERE SERVERID=(select SERVERID from tb_erpconfig WHERE ISMAIN=1 AND ISUSED=1)'DECLARE @T TABLE(SHCode NVARCHAR(50))
    INSERT @T exec(@CKDMSQL)
    SELECT * FROM @T
      

  8.   

    declare @num int, @sqls nvarchar(4000) 
    set @sqls='select count(*) from tableName' 
    exec(@sqls) --如何将exec执行结果放入变量中? declare @num int, @sqls nvarchar(4000) 
    set @sqls='select @a=count(*) from tableName ' 
    exec sp_executesql @sqls,N'@a int ',@num  
    select @num 
      

  9.   

    看来是SQL版本问题了,我看错了,是2000的,唉,公司太垃圾的数据库了,抱歉,都不知道怎么解决了