ttIsqlでのエラーの表示

ttIsqlshow errorsコマンドを使用すると、無名ブロックの実行時、あるいはパッケージ、プロシージャまたはファンクションのコンパイル時に発生するエラーの詳細を表示できます。

これは次の例のようになります。

もう一度、「パッケージの作成および使用」内の例について考えてみましょう。そこで示されていたのと同じパッケージ仕様(プロシージャおよびファンクションhire_employeeremove_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