qiongshizu
2015-03-26 09:12
采纳率: 33.3%
浏览 1.6k

oracle 存储过程 求教

根据现有表自动生成新表 并加入两个新列,我写了代码,但执行的时候报错:
ORA-01735: invalid ALTER TABLE option
ORA-06512: at "GX.CREATETAB_GX_ASSIGNMENT_PRO", line 13
ORA-06512: at line 2
忽略之后生成了跟原表结构相同的表 并没有增加新列,代码如下(前面的数字代表行数是我加的):
1 CREATE OR REPLACE procedure GX.createtab_gx_assignment_pro
2 Authid Current_User
3 as
4 tabname Varchar(200);
5 asql Varchar(200);
6 bsql Varchar(200);
7
8 begin
9 select 'GX_ASSIGNMENT_'||to_char(sysdate,'yyyymmdd') into tabname from dual;
10 asql:='create table '||tabname||' as select * from gx.GX_ASSIGNMENT where rownum=0';
11 execute immediate asql ;
12 bsql:='alter table gx.'||tabname||'add(ScnNum Number,Operate Varchar(35))';
13 execute immediate bsql;
14
15 commit;
16 end;

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • danielinbiti 2015-03-26 10:02
    已采纳

    两个

     create or replace procedure createtab_gx_assignment_pro
    Authid Current_User
    as
    tabname Varchar(200);
    

    去掉一个后执行没问题。

    
    create or replace procedure createtab_gx_assignment_pro
    Authid Current_User
    as
    tabname Varchar(200);
    asql Varchar(200);
    bsql Varchar(200);
    begin
    select 'GX_ASSIGNMENT_'||to_char(sysdate,'yyyymmdd') into tabname from dual;
    asql:='create table tabname as select * from gx.GX_ASSIGNMENT where rownum=0';
    execute immediate asql using tabname;
    commit;
    end;
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题