SELECT INTO
ステートメントが1行以外を返す場合、ステートメントはエラーをスローします。 0行が返される場合は、no_data_found
を取得します。 例外。複数の行を返す場合は、too_many_rows
を取得します 例外。給与が3000を超える従業員が常に1人だけいることがわかっている場合を除いて、SELECT INTO
は必要ありません。 ここに声明。
ほとんどの場合、カーソルを使用してデータの複数の行を(潜在的に)反復する必要があります(デカルト積ではなく、2つのテーブル間で適切な結合を行うことを意図していると想定しているため、 departmentID
です 両方のテーブルの列)
BEGIN
FOR rec IN (SELECT EMPLOYEE.EMPID,
EMPLOYEE.ENAME,
EMPLOYEE.DESIGNATION,
EMPLOYEE.SALARY,
DEPARTMENT.DEPT_NAME
FROM EMPLOYEE,
DEPARTMENT
WHERE employee.departmentID = department.departmentID
AND EMPLOYEE.SALARY > 3000)
LOOP
DBMS_OUTPUT.PUT_LINE ('Employee Nnumber: ' || rec.EMPID);
DBMS_OUTPUT.PUT_LINE ('---------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Name: ' || rec.ENAME);
DBMS_OUTPUT.PUT_LINE ('---------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Designation: ' || rec.DESIGNATION);
DBMS_OUTPUT.PUT_LINE ('----------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Salary: ' || rec.SALARY);
DBMS_OUTPUT.PUT_LINE ('----------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Department: ' || rec.DEPT_NAME);
END LOOP;
END;
PL/SQLも学んでいると思います。実際のコードでは、dbms_output
を使用することはありません。 このように、dbms_output
に書き込んだデータを誰にも見られないようにします。 バッファ。