用select 对存储过程的返回记录集进行再次查询
create table #tmp (字段 字段类型)
insert #tmp Exec procedureName
Select * from #tmp where ...

解决方案 »

  1.   

    这个语句的前提是我必须先知道#tmp的结构呀,如果不道,那怎么行??
      

  2.   

    你想要什么效果啊?
    直接执行就行了,没有办法保存到表中。eg
    用记录集打开
    rs.open " exec 存储过程 "
      

  3.   

    假设你的纪录集为rs,那么你可以这样:    Dim strTmp As String
        strTmp = rs.Source
        strTmp = Left(strTmp, InStr(UCase(strTmp), " FROM ")) & " into Newtable " + Mid(strTmp, InStr(UCase(strTmp), " FROM "))
        cn.execute strTmp这样就将你的纪录集导出到一个新表Newtable中
      

  4.   

    当然上述方法不适合用于记录集是通过存储过程得到的情况调用存储过程只能用这种形式:
    create table #tmp (字段 字段类型)
    insert #tmp Exec procedureName
    Select * from #tmp where ...
    此时你必须知道其表结构
      

  5.   

    你可以同过表名在sysobjects中得到表的编号,再通过编号在syscolumns中得到字段的信息,再创建临时表.不知道这样的想法可以行得通吗
      

  6.   

    可以在存储过程里面处理呀,你的纪录集总是通过语句得来的,那么加多一个全局变量##newtable,在你得到纪录集的时候多加一个select ... int ##newtable呀将你的存储过程贴出来看看
      

  7.   

    set @sql='select 身份证号'
    select @sql=@sql +',case 原因 when '''+  rtrim(t1.原因) + ''' then sum(处罚比例/100*时数) else 0 end as ['+ rtrim(t1.原因)+']' 
    from (select distinct 原因 from chkattend_ds ) t1
    set @sql=@sql+' from  chkattend_ds where datediff(m,日期,'''+@date+''')=0 group by 身份证号,原因'
    exec (@sql)
      

  8.   

    --修改成下面的就可以了:set @sql='select 身份证号'
    select @sql=@sql +',case 原因 when '''+  rtrim(t1.原因) + ''' then sum(处罚比例/100*时数) else 0 end as ['+ rtrim(t1.原因)+']' 
    from (select distinct 原因 from chkattend_ds ) t1
    set @sql=@sql+' into 要生成的表名                   --这里加上生成表的语句就行了
    from  chkattend_ds where datediff(m,日期,'''+@date+''')=0 group by 身份证号,原因'
    exec (@sql)
      

  9.   

    select 身份证号,case 原因 when rtrim(t1.原因) then sum(处罚比例/100*时数) else 0  end) as '['+rtrim(t1.原因)+']'
    into #aa
    from (select distinct 原因 from chkattend_ds) t1
    from chkattend_ds where 1=2set @sql='select 身份证号'
    select @sql=@sql +',case 原因 when '''+  rtrim(t1.原因) + ''' then sum(处罚比例/100*时数) else 0 end as ['+ rtrim(t1.原因)+']' 
    from (select distinct 原因 from chkattend_ds ) t1
    set @sql=@sql+' from  chkattend_ds where datediff(m,日期,'''+@date+''')=0 group by 身份证号,原因'
    insert #aa exec (@sql)
      

  10.   

    啊,晕,搞了一大圈,只要一个select into 就好了,真是够笨的.