declare str varchar2(500); begin str:='alter table a add ab number'; execute immediate str; end; 这也是动态执行alter table,没问题的。
在ORACLE8.05中不能用EXECUTE的?
你已试过dbms_sql执行alter table有问题吗?
试试这种形式: CREATE OR REPLACE PROCEDURE test AS v_Cursor NUMBER; v_Str VARCHAR2(500); BEGIN v_Cursor:=DBMS_SQL.open_cursor; v_Str:='alter table a add abc number'; DBMS_SQL.parse(v_Cursor,v_str,DBMS_SQL.V7); EXCEPTION WHEN OTHERS THEN RAISE; END;
str varchar2(500);
begin
str:='alter table a add ab number';
execute immediate str;
end;
这也是动态执行alter table,没问题的。
CREATE OR REPLACE PROCEDURE test AS
v_Cursor NUMBER;
v_Str VARCHAR2(500);
BEGIN
v_Cursor:=DBMS_SQL.open_cursor;
v_Str:='alter table a add abc number';
DBMS_SQL.parse(v_Cursor,v_str,DBMS_SQL.V7);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;