写了一个如下的存储过程
create or replace procedure add_field(tb_name varchar2,owner varchar2)
as
tempSQL varchar2(1000);
type cursor_t is ref cursor;
emp_cur cursor_t ;begin
tempSQL := 'select column_name,data_type,data_length,data_precision,data_scale from dba_tab_columns';
tempSQL := tempSQL || ' where owner = ''' || owner || ''' and table_name = ''' || tb_name || '''';
open emp_cur for tempSQL;
……
close emp_cur;
end add_field;首先tempsql拼接出来的sql语句是可以执行的,已经测试过了
结果在测试这个存储过程的时候总是在open emp_cur for tempSQL这里提示“表或视图不存在”,望高人指点
create or replace procedure add_field(tb_name varchar2,owner varchar2)
as
tempSQL varchar2(1000);
type cursor_t is ref cursor;
emp_cur cursor_t ;begin
tempSQL := 'select column_name,data_type,data_length,data_precision,data_scale from dba_tab_columns';
tempSQL := tempSQL || ' where owner = ''' || owner || ''' and table_name = ''' || tb_name || '''';
open emp_cur for tempSQL;
……
close emp_cur;
end add_field;首先tempsql拼接出来的sql语句是可以执行的,已经测试过了
结果在测试这个存储过程的时候总是在open emp_cur for tempSQL这里提示“表或视图不存在”,望高人指点
在管理员权限下是可以执行的SELECT * FROM DBA_TAB_COLUMNS
我用plsql,使用a这个普通用户登陆的,单独执行select * from dba_tab_columns也是可以的,就是放到存储过程或者函数里面,然后f9跟踪就出现那个错误了。