私はほとんど問題ありません。私はテーブルに値を挿入しようとしています。これは機能しています。しかし、値id_trainerが別のテーブルに存在するかどうかを制御したいと思います。 insertClub(1、5、 'someName');を実行します。 - > id_trainer 5がテーブルトレーナーに存在しない場合、プロシージャからこれに関するメッセージが表示されます。 (私はENGにそれを翻訳してみました。LNG。、あなたには、いくつかのGRAMMを見つけることができるようにします。ミス)sqlの挿入プロシージャ:値をテーブルに挿入し、値が別のテーブルに存在するかどうかを制御します。
create or replace procedure insertClub
(id_club in number, id_trainer in number, clubName in varchar2)
is
begin
declare counter number;
select count(*) into counter from trianer tr where tr.id_trainer = id_trainer;
if counter = 0 then
DBMS_OUTPUT.PUT_LINE('Trainer with this ID not exists');
end if;
insert into club values(id_club, id_trainer, clubName);
exception
when dup_val_on_index then
DBMS_OUTPUT.PUT_LINE('Dup ID');
end;
/
おそらくパラメータ名が列名と同じであるため、問題があります。 'where tr.id_trainer = insertClub.id_trainer'に変更するか、パラメータ名を' p_id_trainer'や 'l_id_trainer'のように変更する必要があります。 –
私はそれを変更しようとしました。しかし、何も起こらなかった。 selectには下線が引かれているので、変数やselectに何らかの問題があります。そして、私は "期待しています:(。%@"; "show err;"の後に) –