0

指定された部門番号の従業員数を表示する無名ブロックを作成します (置換変数を使用)。部署名も表示します。

試してみましたが、実行されない理由がわかりません。コードは次のとおりです。

DECLARE 
dep_id NUMBER :=depid;
dep_name VARCHAR2(20);
emp_id NUMBER;

BEGIN
SELECT department_id, department_name
INTO dep_id, dep_name
FROM departments 
WHERE department_id = dep_id;

SELECT count(employee_id), department_id
INTO emp_id, dep_id
FROM employees
WHERE employee_id = department_id
DBMS_OUTPUT.PUT_LINE(count(employee_id));

EXCEPTION
 WHEN NO_DATA_FOUND THEN
  DBMS_OUTPUT.PUT_LINE(‘No such department');
 END
4

1 に答える 1

0

パフォーマンスの問題とそれを行うための最良の方法については触れずに、いくつかの問題を修正する必要があるようです:

1) dep_id NUMBER :=depid;- どこdepidから来たの? sqlplusを使用している場合は、次のことができます

dep_id NUMBER := &depid;

これにより、ユーザーは depid の入力を求められます。

2) DBMS_OUTPUT.put_line (COUNT (employee_id));- COUNT (employee_id)SQL クエリの一部です。plsql コードから単に「呼び出す」ことはできません。あなたがすべきことは、emp_id選択COUNT (employee_id)した変数を使用することです:

DBMS_OUTPUT.put_line (emp_id);
于 2012-11-13T05:56:23.420 に答える