Oracle 如何使用executeimmediate添加列
我只想使用executeimmediate添加列,但我得到一个错误。请让我知道此PL/SQL块是否正确Oracle 如何使用executeimmediate添加列,oracle,plsql,oracle11g,Oracle,Plsql,Oracle11g,我只想使用executeimmediate添加列,但我得到一个错误。请让我知道此PL/SQL块是否正确 create or replace procedure add_column (xyz in varchar2, abc in varchar2) is begin EXECUTE IMMEDIATE 'alter table ' || 'xyz add abc varchar2(20)'; dbms_output.put_line('New column added');
create or replace procedure add_column (xyz in varchar2, abc in varchar2) is
begin
EXECUTE IMMEDIATE 'alter table ' || 'xyz add abc varchar2(20)';
dbms_output.put_line('New column added');
end;
exec add_column ('students', 'time');
error: Error starting at line : 8 in command -
BEGIN add_column ('students', 'time'); END;
ORA-00942: table or view does not exist
ORA-06512: at "HR.ADD_COLUMN", line 4
ORA-06512: at line 1
您需要将字符串concatation用作:
EXECUTE IMMEDIATE 'alter table ' || xyz || ' add ' || abc || ' varchar2(20)';
另外,DBMS\u ASSERT
可用于检查表和列的有效名称,如下所示
EXECUTE IMMEDIATE 'alter table ' || sys.DBMS_ASSERT.SQL_OBJECT_NAME(xyz)
|| ' add ' || sys.DBMS_ASSERT.SQL_OBJECT_NAME(abc) || ' varchar2(20)';
此处,
xyz
和abc
将替换为输入参数名称。完成。非常感谢您的帮助。:)