【发布时间】: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):警告:已编译但存在编译错误
【问题讨论】: