0
私は、クエリから値を割り当てるための変数を宣言しませんでした。なぜ、以下のコードでINTO句のエラーがスローされるのですか?selectステートメントでINTO句が必要なのはなぜですか?
create or replace PROCEDURE Disp_of_IPC_Crime_Case(
startDate DATE,
endDate DATE)
IS
BEGIN
SELECT *
FROM (
SELECT COUNT(*)
FROM t_crime_major_minor_heads cdmh
INNER JOIN t_fir_registration fr
ON fr.FIR_REG_NUM= cdmh.FIR_REG_NUM
INNER JOIN t_final_report fnr
ON fnr.FIR_REG_NUM = cdmh.FIR_REG_NUM
WHERE MAJOR_HEAD_CD = 8
AND fr.RECORD_CREATED_ON > (StartDate - INTERVAL '5' YEAR)
AND NVL(fnr.FR_TYPE_CD,0) =11
AND NVL(fnr.CHARGSHEET_OR_NOT,'')='N'
) Below5COUNTERFEITING;
END;
クエリの結果をどこかに保存する必要があるため、エラーが発生します。結果を使って文を実行することはできません(派生テーブルはまったく役に立たない) –
PLSQLブロックでは、クエリの結果をフェッチするための変数が必要です。単純なSQLと同じクエリを実行するだけで結果が得られますが、ブロック(匿名、関数、プロシージャなど)で値を変数にフェッチし、変数を使用する必要があります – Aleksej