我想写一个存储过程,功能是建立一个表B,表B的结构是表A的结构外加2个新的字段,我自己定义了新加的这2个字段的名字A1和A2。
其中我已经把表A的所有字段组合成了一个字符串str了于是我这样写
execute immediate ' create table B ('||str||',A1,A2)as select '||str||',''none'',''none'' from A';报错 提示我A1和A2是未定义的列,我该怎么办呢?
其中我已经把表A的所有字段组合成了一个字符串str了于是我这样写
execute immediate ' create table B ('||str||',A1,A2)as select '||str||',''none'',''none'' from A';报错 提示我A1和A2是未定义的列,我该怎么办呢?
execute immediate 'create table B (
col1,col2,A1,A2) as select col1,col2,''none'',''none'' from A';
id varchar2(20);
BEGIN
id:='id';
EXECUTE IMMEDIATE 'CREATE TABLE g ('||ID||',A1,A2)AS SELECT '||ID||',''NONE'',''NONE'' FROM TEST';
END;
我这样执行可以,好像一样的吧,你将完整的代码贴出来!
--试都不去试 浪费我
SQL> begin
2 execute immediate ' create table emp_bk as select a.*,''none'' A1,''none'' A2 from emp a';
3 end;
4 /
PL/SQL procedure successfully completed
SQL> select * from emp_bk
2 /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO A1 A2
----- ---------- --------- ----- ----------- --------- --------- ------ ---- ----
7369 SMITH CLERK 7902 1980-12-17 800.00 20 none none
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30 none none
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30 none none
7566 JONES MANAGER 7839 1981-4-2 2975.00 20 none none
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30 none none
7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30 none none
7782 CLARK MANAGER 7839 1981-6-9 2450.00 10 none none
7788 SCOTT ANALYST 7566 1987-4-19 3000.00 20 none none
7839 KING PRESIDENT 1981-11-17 5000.00 10 none none
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30 none none
7876 ADAMS CLERK 7788 1987-5-23 1100.00 20 none none
7900 JAMES CLERK 7698 1981-12-3 950.00 30 none none
7902 FORD ANALYST 7566 1981-12-3 3000.00 20 none none
7934 MILLER CLERK 7782 1982-1-23 1300.00 10 none none
14 rows selected