Oracle Apex 4.2でデータベース11gを使用しています。私は、ユーザから受け取った値(l_requested_time)をテーブルの列(music_lookup.valid_time)に格納されている値と比較する必要があります。提供された値がテーブルに含まれている場合、トランザクションは続行する必要があります。指定された値がテーブルにない場合は、トランザクションをキャンセルする必要があります。私はこれをApexに入れる前にSQL Developerでこれを構築しています。 SQL Developerで次のコードを実行すると、エラー・メッセージが表示されます。PLS-00405:このコンテキストではサブクエリは使用できません。私はこの制限を回避する方法を知りません。PL/SQL IN句をテーブルに使用
Declare
l_requested_time varchar2(256);
Begin
l_requested_time := '10:00 AM';
If l_requested_time in (select valid_time from music_lookup)
Then dbms_output.put_line('The transaction is authorized');
Else dbms_output.put_line('The transaction is NOT authorized');
End if;
End;
この問題にアプローチするには、より良い方法がありますか?
ありがとうございます。
こんにちはBobC、ありがとうございます。ほんとうにありがとう。それは素晴らしいアプローチであり、うまく動作します。あなたの他の懸案事項に答えるには:1)Requested_TimeフィールドとUserNameフィールドの組み合わせに基づいてmusic_lookupテーブルにUnique Key制約があるので、クエリは複数の行を返すべきではありません。結合されたキーは、ユーザーがその時刻を含むタイムスタンプを持つレコードを編集する権限を持っていることを示します。 2)l_requested_timeフィールドは、タイムスタンプフィールドから抽出されます。 Apexに移動する前にSQLDeveloperを使用していたので、私はUserNameを含めなかった。再度、感謝します。 – user3138025