ttIsqlでのエラーの表示
ttIsql
でshow errors
コマンドを使用すると、無名ブロックの実行時、あるいはパッケージ、プロシージャまたはファンクションのコンパイル時に発生するエラーの詳細を表示できます。
これは次の例のようになります。
もう一度、「パッケージの作成および使用」内の例について考えてみましょう。そこで示されていたのと同じパッケージ仕様(プロシージャおよびファンクションhire_employee
、remove_employee
およびnum_above_salary
を宣言)を想定します。ただし、そこで示されていた本体の定義のかわりに、次のようにhire_employee
およびnum_above_salary
(remove_employee
は除外)の定義を検討します。
CREATE OR REPLACE PACKAGE BODY emp_actions AS
-- Code for procedure hire_employee:
PROCEDURE hire_employee (employee_id NUMBER,
last_name VARCHAR2,
first_name VARCHAR2,
email VARCHAR2,
phone_number VARCHAR2,
hire_date DATE,
job_id VARCHAR2,
salary NUMBER,
commission_pct NUMBER,
manager_id NUMBER,
department_id NUMBER) IS
BEGIN
INSERT INTO employees VALUES (employee_id,
last_name,
first_name,
email,
phone_number,
hire_date,
job_id,
salary,
commission_pct,
manager_id,
department_id);
END hire_employee;
-- Code for function num_above_salary:
FUNCTION num_above_salary (emp_id NUMBER) RETURN NUMBER IS
emp_sal NUMBER(8,2);
num_count NUMBER;
BEGIN
SELECT salary INTO emp_sal FROM employees
WHERE employee_id = emp_id;
SELECT COUNT(*) INTO num_count FROM employees
WHERE salary > emp_sal;
RETURN num_count;
END num_above_salary;
END emp_actions;
/
元々のパッケージ仕様の後でこの本体の定義を試みると、次のようになります。
Warning: Package body created with compilation errors.
さらに情報を取得するには、ttIsql
を実行して、コマンドshow errors
を使用します。この例では、show errors
の結果は次のようになります。
Command> show errors;
Errors for PACKAGE BODY EMP_ACTIONS:
LINE/COL ERROR
-------- -----------------------------------------------------------------
13/13 PLS-00323: subprogram or cursor 'REMOVE_EMPLOYEE' is declared in a
package specification and must be defined in the package body