私はEmployeesテーブルで構成される古い学校のHRスキーマを持っています。表には従業員の給与の列があります。最低給与は2100で最大は24000です。私がテーブルの給与欄(2100から24000まで)にない1000の給与(3000,4000,5000 ...)をすべて見つけたら、どうすればよいですか?SELECT文のFORループを使用して複数のデータをカーソルでフェッチする方法はありますか?
私は、カーソルのselect文にFORループを使用し、カーソルを介してデータを取り出して表示することを考えました。しかし、それはエラーを投げる。以下の私が言及した問題のためにしようとしたものです:治療法と
誰でも「の代わりに予想される」と言って投げるとエラーコードの上に
declare
cursor c1 is
for i in 2000..25000
loop
select salary
from employees where salary<>i;
end loop;
sal number(10);
begin
for cur IN c1
loop
dbms_output.put_line(c1.sal);
end loop;
end;
?
なぜ「FORループを使用してカーソルスルー」?数値範囲内の欠損値をリストする方法が必要なように思えます。カーソル定義は有効なSQLを使用しなければならないので、 'for'ではなく' select'または 'with'で始まる必要があります。 –
はいそれは常にエラーを投げた - 「期待された」は「for」の代わりに「行番号で」を選択する。これは、カーソル定義が最初にselect文を期待していることを明確にしています。 – hashir