【问题标题】:UTL_FILE WITH %ROWTYPE .. ERRORUTL_FILE WITH %ROWTYPE .. 错误
【发布时间】:2012-12-28 04:06:15
【问题描述】:

我想创建一个程序,从员工记录中获取工资高于输入数字的行。 然后将该输出输出到文本文件。 我不明白我在哪里做错了。请帮帮我。提前致谢。

我的员工表结构如下。 描述表员工; 名称空?输入


EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE 非空日期
JOB_ID NOT NULL VARCHAR2(10)
工资号码(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)

当我想在脚本下面运行时。

    CREATE OR REPLACE PROCEDURE P_TEST3 ( P_SAL NUMBER) IS

    TYPE EMP_TEMP IS TABLE OF employees%ROWTYPE;
   V_EMP_ROW     EMP_TEMP ;


 V1 utl_file.file_type;

 E1 utl_file.file_type;

    BEGIN


 V1 := utl_file.fopen('ABC','VALID.txt','W');
E1 := utl_file.fopen('ABC','ERROR.txt','W');

SELECT *  BULK COLLECT INTO V_EMP_ROW   FROM Employees  WHERE salary > p_sal   ;

FOR i IN  V_EMP_ROW.FIRST .. V_EMP_ROW.LAST 
    LOOP
    UTL_FILE.PUT_LINE (V1, V_EMP_ROW(I).EMPLOYEE_ID ||',' || V_EMP_ROW(I).FIRST_NAME ||','|| V_EMP_ROW(I).SALARY );
    END LOOP;

  dbms_output.put_line ('Total row inserted '||sql%rowcount || '.  Please see valid.txt file ' );


EXCEPTION

WHEN OTHERS THEN
raise_application_error( -20002,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);

utl_file.put_line (E1,SQLCODE || '---' || SQLERRM);

DBMS_OUTPUT.PUT_LINE ('PLEASE SEE Error.txt FILE');

utl_file.fclose(v1);
utl_file.fclose(E1);

 END P_TEST3;

/

编译器给出以下错误。 [警告] ORA-24344: 编译错误成功 21/42 PLS-00302:必须声明组件“EMPLOYEE_ID” 21/9 PL/SQL:语句被忽略 (1:0):警告:已编译但存在编译错误

【问题讨论】:

    标签: utl-file rowtype


    【解决方案1】:

    给出错误的行是 21,它似乎是:

    UTL_FILE.PUT_LINE (V1, V_EMP_ROW(I).EMPLOYEE_ID ||',' || V_EMP_ROW(I).FIRST_NAME ||','|| V_EMP_ROW(I).SALARY );
    

    我认为问题在于您的 BULK SELECT 语句中没有返回任何行,或者它们不是您期望的格式。

    尝试输入类似的内容:

    dbms_output.put_line('Record is: '|| V_EMPROW(i));
    

    作为循环的第一行。

    或者,也许在循环之前对批量选择结果进行记录计数:

    dbms_output.put_line('Record count is: '|| V_EMPROW.COUNT);
    

    【讨论】:

      猜你喜欢
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多