如何在存储过程中使用alter语句?
在oracle中建立如下存储过程
create or replace procedure MoveTablespace(p_TableName in varchar2, p_TablespaceName in varchar2)
authid current_user is
v_Cursor number;
v_DDLString varchar2(100);
v_NumRows integer;
begin
v_Cursor := dbms_sql.open_cursor;
v_DDLString := 'alter table :Table_Name move tablespace :TablespaceName';
dbms_sql.parse(v_Cursor, v_DDLString, dbms_sql.native);
dbms_sql.bind_variable(v_Cursor, ':TableName', p_TableName);
dbms_sql.bind_variable(v_Cursor, ':TablespaceName', p_TablespaceName);
v_NumRows := dbms_sql.execute(v_Cursor);
dbms_output.put_line(v_NumRows || 'rows affected');
dbms_sql.close_cursor(v_Cursor);
exception
when others then
dbms_output.put_line('exception ocurred');
dbms_sql.close_cursor(v_Cursor);
end;
编译通过,但在sqlplus中执行
exec movetablespace(cjdaold, whcj)
时出错
ERROR 位于第 1 行:
ORA-06550: 第 1 行, 第 22 列:
PLS-00357: 在此上下文中不允许表,视图或序列引用 'CJDAOLD'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
请问怎么解决这个问题啊?