truncate table @t1 --第28行
    truncate table @t2 
    insert @t1 exec dbo.getHC_0 @s_stop,@temp_stop --返回bus_id,e_stop,num并填充进@t1 
    insert @t2 exec dbo.getHC_0 @temp_stop,@e_stop --返回bus_id,e_stop,num并填充进@t2 
    insert @t select @t1.e_stop as m_state,@t2.e_stop as e_state,@t1.bus_name as bus_name1,@t2.bus_name as bus_name2,@t1.num as num1,@t2.num as num2 
from @t1 cross join @t2  --第32行,返回通过此个中转站的所有可能路线 
Q:我想把dbo.getHC_0返回的3个字段bus_id,e_stop,num的值分别填充进@t1和@t2里然后再把@t1和@t2的值汇总到@t1中,现在查询分析器报以下错:
服务器: 消息 170,级别 15,状态 1,过程 getHC_1,行 28
第 28 行: '@t1' 附近有语法错误。
服务器: 消息 197,级别 15,状态 1,过程 getHC_1,行 31
无法在向表插入变量时将 EXECUTE 用作源。
服务器: 消息 197,级别 15,状态 1,过程 getHC_1,行 32
无法在向表插入变量时将 EXECUTE 用作源。
服务器: 消息 170,级别 15,状态 1,过程 getHC_1,行 32
第 32 行: '.' 附近有语法错误。应该怎样改?
完整代码在此贴:http://topic.csdn.net/u/20080608/14/e46b43e2-0808-4e83-9333-15bbebce02b7.html

解决方案 »

  1.   

    1,truncate table 接表名,不支持表变量。
    2,没有@t1.字段1, @t2.字段x 这种写法。给别名
    比如
    select a.f1,b.f1 from @t1 a inner join @t2 b on a.id=b.id
    3,其它的因为看不到表变量结构和存储过程返回的数据结果结构,所以只能你自己查了。
      

  2.   

    无法在向表插入变量时将 EXECUTE 用作源。 
    服务器: 消息 170,级别 15,状态 1,过程 getHC_1,行 32 
    ↑这个怎么解决?
      

  3.   

    用临时表代替。即用 #x 代替 @x或者换种方式insert @t select a.* from openrowset('....',....,'exec 存储过节程') a不推荐