【发布时间】:2014-07-23 05:07:57
【问题描述】:
谢谢大家,我已从 varchar2(10) 修改为 varchar2(20) 并删除了执行立即语句中的 column 关键字,然后程序正在执行
declare
coldate varchar2(20);
colname varchar2(20);
begin
coldate :='varchar2(10)';
colname :='smaple';
execute immediate 'alter table smap1 add column '||colname ||' '||coldate ;
end;
如果我想动态获取值,我使用了以下代码
declare
coldate varchar2(20):=&coldate;
colname varchar2(20):=&colname;
begin
execute immediate 'alter table smap1 add '||colname ||' '||coldate ;
end;
然后我得到错误
[Error] Execution (11: 23): ORA-06550: line 2, column 23:
PLS-00330: invalid use of type name or subtype name
ORA-06550: line 2, column 9:
PL/SQL: Item ignored
ORA-06550: line 3, column 23:
PLS-00201: identifier 'SMAPLE' must be declared
ORA-06550: line 3, column 9:
PL/SQL: Item ignored
ORA-06550: line 6, column 45:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 6, column 1:
PL/SQL: Statement ignored
【问题讨论】:
-
'varchar2(10)'是 12 个字符,您只保留 10 个字符。 -
谢谢大家,我已从
varchar2(10)修改为varchar2(20)但我在程序中遇到另一个错误 ORA-00904: : invalid identifier ORA-06512: at line 7 -
请参阅下面的答案,并在此处添加详细信息。
-
谢谢,我已经修改了代码,但仍然执行的查询出现错误
-
您可能希望在创建问题时添加所有详细信息,而不是随时添加复杂性。删除我的答案,因为它是您原始问题的答案,而不是更新后的答案。