3.8.2. 仮想手順


仮想手順は、Data Virtualization の手順言語を使用して定義されます。詳細は、「 手順言語」を参照し てください。

仮想手順では、0 つ以上の INPUT、INOUT、OUT パラメーター、オプションの RETURN パラメーター、および任意の結果セットがあります。仮想手順では、クエリーおよびその他の SQL コマンドの実行、一時テーブルの定義、一時テーブルへのデータの追加、結果セットの実行、ループの使用、および条件付きロジックの使用を行うことができます。

仮想手順の定義

詳細は、スキーマオブジェクトの DDL メタデータ での 手順/機能の作成 について参照してください。

オプションの result パラメーターは、常に最初のパラメーターとみなされます。

この手順のボディーでは、有効なステートメントを使用できます。プロシージャー言語ステートメントの詳細は、「ステップ言語」を参照してください。???

ステートメントが明示的なカーソルや値を返すことはありません。代わりに、結果セットを返す手順で実行される、最後に名前のないコマンドステートメントが結果として返されます。そのステートメントの出力は、手順の予想される結果セットとパラメーターと一致する必要があります。

仮想手順のパラメーター

仮想手順では、ゼロまたは IN OUT パラメーターを取り、任意の数の OUT パラメーターと任意の RETURN パラメーターを指定できます。各入力には、ランタイム処理中に使用される以下の情報があります。

名前
入力パラメーターの名前。
データタイプ
入力パラメーターの設計時間タイプ。
デフォルト値
入力パラメーターが指定されていない場合のデフォルト値。
Null 許容型
NO_NULLS,NULLABLE,NULLABLE_UNKNOWN; パラメーターは null 可能である場合にオプションであり、名前付きパラメーター構文を使用する場合は一覧表示する必要はありません。

完全修飾名(またはあいまいな場合)を使用して仮想手順のパラメーターを参照します。例: MySchema.MyProc.Param1

例: 入力パラメーターを参照し、GetBalance の手順に Out パラメーターを割り当てる

BEGIN
  MySchema.GetBalance.RetVal = UPPER(MySchema.GetBalance.AcctID);
  SELECT Balance FROM MySchema.Accts WHERE MySchema.Accts.AccountID = MySchema.GetBalance.AcctID;
END
Copy to Clipboard Toggle word wrap

この手順で INOUT パラメーターの値が割り当てられていない場合は、入力のために割り当てられた値を保持します。値を割り当てられていない OUT/RETURN パラメーターは、デフォルトの NULL 値を保持します。INOUT/OUT/RETURN 出力値は、パラメーターの NOT NULL メタデータに対して検証されます。

仮想手順の例

以下の例は、カーソルテーブルを記述し、CONTINUE および BREAK を使用するループを示しています。

LOOP、CONTINUE、BREAK を使用した仮想手順

BEGIN
  DECLARE double total;
  DECLARE integer transactions;
  LOOP ON (SELECT amt, type FROM CashTxnTable) AS txncursor
  BEGIN
    IF(txncursor.type <> 'Sale')
    BEGIN
      CONTINUE;
    END ELSE
    BEGIN
      total = (total + txncursor.amt);
      transactions = (transactions + 1);
      IF(transactions = 100)
      BEGIN
        BREAK;
      END
    END
  END
  SELECT total, (total / transactions) AS avg_transaction;
END
Copy to Clipboard Toggle word wrap

以下の例では、条件付きロジックを使用して、実行する 2 つの SELECT ステートメントを決定します。

条件付き SELECT を使用した仮想手順

BEGIN
  DECLARE string VARIABLES.SORTDIRECTION;
  VARIABLES.SORTDIRECTION = PartsVirtual.OrderedQtyProc.SORTMODE;
  IF ( ucase(VARIABLES.SORTDIRECTION) = 'ASC' )
  BEGIN
    SELECT * FROM PartsVirtual.SupplierInfo WHERE QUANTITY > PartsVirtual.OrderedQtyProc.QTYIN ORDER BY PartsVirtual.SupplierInfo.PART_ID;
  END ELSE
  BEGIN
    SELECT * FROM PartsVirtual.SupplierInfo WHERE QUANTITY > PartsVirtual.OrderedQtyProc.QTYIN ORDER BY PartsVirtual.SupplierInfo.PART_ID DESC;
  END
END
Copy to Clipboard Toggle word wrap

仮想手順の実行

SQL EXECUTE コマンドを使用して手順を実行します。詳細は、「 DML コマンド での コマンドの実行」を参照し てください。

手順に入力が定義されている場合は、連続リストまたは name=value 構文でそれらを指定します。この手順の他の列や変数のコンテキストでパラメーター名が曖昧である場合、完全な手順名によってスコープ指定された入力パラメーターの名前を使用する必要があります。

仮想プロシージャーコールは SELECT などの結果セットを返すため、これは SELECT を使用できる場所の多くで使用できます。通常、以下の構文を使用します。

SELECT * FROM (EXEC ...) AS x
Copy to Clipboard Toggle word wrap

仮想手順の制限

仮想手順では、結果セットを 1 つだけ返すことができます。結果セットを渡す必要がある場合や、複数の結果セットを渡す必要がある場合には、代わりにグローバル一時テーブルの使用を検討してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat