首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

在存储过程里给临时表添列

2013-01-12 
在存储过程里给临时表加列For cur_Review In( SELECT extractValue(value(t),/item/@date) as d_dateFro

在存储过程里给临时表加列
For cur_Review In( SELECT extractValue(value(t),'/item/@date') as d_date
                            From (select xmltype(a_date_xml) as recode from dual) x
                                  ,TABLE( xmlsequence (
                                          extract(x.recode,
                                                  '/data/item'))
                                       ) t)
               Loop
                 v_date:=cur_Review.d_date;
                 v_sql:='ALTER TABLE Temp_item_table ADD (col'||v_date||' varchar2(50));';                 
              End loop;
              execute   immediate v_sql;--执行添加列语句

--想法:循环游标,每次都添加一个列,最后执行下语句。然后就报错了。我跟踪了下,v_sql是这样的

ALTER TABLE Temp_item_table ADD (col20120018 varchar2(50));
ALTER TABLE Temp_item_table ADD (col20120019 varchar2(50));
ALTER TABLE Temp_item_table ADD (col20120020 varchar2(50));
ALTER TABLE Temp_item_table ADD (col20120021 varchar2(50));

这个是在存储过程里面执行的。
[解决办法]

      v_sql:='ALTER TABLE Temp_item_table ADD (col'
[解决办法]
v_date
[解决办法]
' varchar2(50));';      
--把最后面的;去掉,改成
      v_sql:='ALTER TABLE Temp_item_table ADD (col'
[解决办法]
v_date
[解决办法]
' varchar2(50))';

热点排行