私は学校の割り当てをしなければならないが、私は2つのエラーを取得:データベースのPL/SQL
遭遇シンボル次のに期待したときに「FETCH」: 一定の例外
<an identifier>
<a double-quoted delimited-identifier>
テーブルLONG_ダブルREFの文字
と目が発生しました
NCHARタイムスタンプ 間隔日付バイナリ国語キャラクタEの記号は、「エンド・オブ・ファイル」 のいずれかを期待するときは、次の終了ここでは、静的 メンバーコンストラクタマップ
をオーバーライドし、最終的なインスタンス化の順序をプラグマませんが、私のコードへのリンクです:http://pastebin.com/h4JN9YQY
CREATE OR REPLACE PROCEDURE generate_bonus
AS
cursor student_info is
select distinct students.id,
events.begindatetime,
events.enddatetime,
count(items.number_of_coupons) as coupons_collected,
events.type from students
join applies on applies.students_id = students.id
join schedules on schedules.id = applies.schedules_id
join events on events.id = schedules.events_id
join orders on orders.students_id = students.id
join orderitems on orderitems.orders_id = orders.id
join items on items.id = orderitems.items_id
join bars on bars.id = orders.bars_id
where applies.status = 'PLANNED'
and orderitems."NUMBER" is not null
and bars.name is not null
group by students.id, events.begindatetime, events.enddatetime, events.type
order by students.id;
BEGIN
DECLARE
s_id integer(256);
s_beginDate date;
s_endDate date;
s_noCoupons number(256);
s_eventType varchar2(256);
s_workedHours number(24) := 8;
calculated_bonus number(256);
count_rows integer(256);
OPEN student_info;
LOOP
FETCH student_info into s_id, s_beginDate, s_endDate, s_noCoupons, s_eventType;
Select count(*) into count_rows from student_bonus where students_id = s_id and rownum <= 1;
EXIT WHEN count_rows = 1;
IF (s_eventType = 'ROUGH') THEN
calculated_bonus := s_workedHours * (s_workedHours/100 * 7) * s_noCoupons;
INSERT INTO student_bonus(students_id, bonus, events_id) VALUES (s_id, calculated_bonus, s_eventType);
calculated_bonus := 0;
ELSIF (s_eventType = 'NORMAL') THEN
calculated_bonus := s_workedHours * (s_workedHours/100 * 4) * s_noCoupons;
INSERT INTO student_bonus(students_id, bonus, events_id) VALUES (s_id, calculated_bonus, s_eventType);
calculated_bonus := 0;
ELSE
calculated_bonus := s_workedHours * (s_workedHours/100 * 2) * s_noCoupons;
INSERT INTO student_bonus(students_id, bonus, events_id) VALUES (s_id, calculated_bonus, s_eventType);
calculated_bonus := 0;
END IF;
END LOOP;
CLOSE student_info;
END generate_bonus;
ここにコードを直接貼り付けてください。 – CinCout
MCVE([MCVE])の作成方法をお読みください。あなたが見せていることは、MCVEの近くにあるものはありそうもありません。 –
count_rowsが0で始まる場合は、おそらくループします。おそらく、count_rows <= 1のときに終了するように変更すると役立ちます – Gar