1

チュートリアルなどの Web 資料を利用して、最初の Oracle フォームを作成しています。トリガーOracle Forms Builderに次のコードを記述しました。WHEN-BUTTON-PRESSED

INSERT INTO PATIENT VALUES 
(:CNIC_NO, :P_NAME, :CITY, :ADDRESS, :GENDER, :BLOOD_GROUP, :DISEASE, :WARD_NO);
COMMIT;

ここでの問題は、ハンドルされない例外がトリガーによって次のエラー番号で発生することです。

  • ORA-12899 (理由は、Null 以外の列に Null 値が挿入されたためです)
  • ORA-1400 (理由は、データ長が許可された長さよりも大きすぎるためです)

これらについては情報メッセージ ボックスを、その他についてはデフォルトのメッセージ ボックスをポップアップ表示する必要があります。

4

3 に答える 3

2

まず、組み込みの Oracle フォーム検証によってこのエラーを回避します。null 以外のデータベース列に基づくすべてのアイテムのプロパティ パネルで、Requiredプロパティをに設定します。TrueOracle フォームは、ユーザーに値の入力を強制します。

次のセットDatatypeMaximum lengthプロパティは、基本的なデータ検証を設定します。

あなたの場合はこれで十分です。それでも例外をキャッチしたい場合は、次のようなコードを使用します。

begin
    INSERT ...
exception
    when others then
        message(DBMSERRTEXT);
end;

とにかく、ボタンが押されたときにトリガーを使用してデータを挿入することはお勧めできません。トランザクションセーフではありません。標準フォーム ブロックを使用します。Oracle Forms は、すべてのデータの検証と操作を行います。

于 2016-09-26T06:18:02.537 に答える
0

NVL挿入ステートメント内で関数を使用する必要がある場合は、null 値を受け入れない指定された列に適切な値が挿入されることを保証する必要があります。まあ、テクニックも身につければいい話です。 Oracle Forms のエラーと情報メッセージを処理する

また、挿入されたアドレスを格納するのに十分な大きさのテーブル列のサイズを構築する必要があります。たとえば、アドレスは 100 varchar2 より大きくなければなりません。

于 2016-09-25T07:06:48.560 に答える
-1

Default Oracle Forms Menu Tool Barを使用すると、フォームの CRUD 操作が処理されます。挿入、更新などを書く代わりに。

ただし、フォームモジュールごとに自分で使用を指定する必要があります。

于 2016-09-26T11:06:15.590 に答える