1. ホーム
  2. oracle

[解決済み] PL/SQLプロシージャ - SQLステートメント無視エラー

2022-02-19 20:59:10

質問

ウェブサイトからチュートリアルを行っています。 http://www.plsqltutorial.com/plsql-procedure/ . 私はapexでコードを実行しました。

CREATE OR REPLACE PROCEDURE adjust_salary(
    in_employee IN EMPLOYEES.EMPLOYEE_ID%TYPE,
    in_percent IN NUMBER
) IS
BEGIN
    UPDATE EMPLOYEES
    SET salary = salary + salary * in_percent / 100
    WHERE employee_id = in_employee_id;
END;

が、エラーになりました。

Error at line 6: PL/SQL: SQL Statement ignored

4. ) IS
5. BEGIN
6.  UPDATE EMPLOYEES
7.  SET salary = salary + salary * in_percent / 100
8.  WHERE employee_id = in_employee_id;

確認したところ、employeesテーブルは存在しました。 何が問題で、どのように修正すればいいのでしょうか?

解決方法は?

<ブロッククオート

WHERE employee_id = in_employee_id;

in_employee_id は宣言されておらず、パラメータでもありません。関数の定義によると、パラメータは in_employee ということで、コードブロックは次のようになります。

CREATE OR REPLACE PROCEDURE adjust_salary(
    in_employee IN EMPLOYEES.EMPLOYEE_ID%TYPE,
    in_percent IN NUMBER
) IS
BEGIN
    UPDATE EMPLOYEES
    SET salary = salary + salary * in_percent / 100
    WHERE employee_id = in_employee;
END;


記事を見ると、関数を作成する際にタイプミスをしているようですが、記事通りの関数宣言は

 CREATE OR REPLACE PROCEDURE adjust_salary(
    in_employee_id IN EMPLOYEES.EMPLOYEE_ID%TYPE,

そのため、上記のようなコードに変更しても、update文の変更は必要ありません。