【发布时间】:2018-05-11 13:15:39
【问题描述】:
我在运行程序时遇到以下错误。是选择正确的.. 试图将表名作为参数传递。请帮忙。
PLS-00364:循环索引变量“CURSOR1”使用无效
PROCEDURE generate_uniqueId(p_table_name IN VARCHAR2) is
--
--
CURSOR unique_id_cur
IS
SELECT /*PARALLEL(20)*/ unique_id
FROM p_table_name;
--
v_file UTL_FILE.file_type;
V_file_name Varchar2 (150);
V_file_parm Varchar2:= ora11g/test/;
v_output varchar2(200);
BEGIN
v_file_name := p_table_name || '.lst';
v_file := UTL_FILE.fopen ('ora11g/test/', 'unique_ID_file', 'A');
FOR cursor1 IN unique_id_cur
LOOP
BEGIN
v_output := cursor1.unique_id;
UTL_FILE.put_line (v_file, v_output);
END;
END LOOP;
UTL_FILE.fflush (v_file);
UTL_FILE.fclose (v_file);
END generate_uniqueId ;
【问题讨论】:
-
我认为你做不到。但这是一个很好的例子。 stackoverflow.com/a/31536690/5414063
-
表“p_table_name”是否包含在您的数据库中,或者您通过“p_table_name”参数将表名传递给游标内的选择语句。