次の方法で共有


db_param

指定したメンバー変数を入力または出力のパラメーターに関連付け、変数を区切ります。

構文

[ db_param(ordinal, paramtype="DBPARAMIO_INPUT", dbtype, precision, scale, status, length) ]

パラメーター

ordinal (序数)
データをバインドする行セット内のフィールドに対応する列番号 (DBCOLUMNINFO 序数)。

paramtype
(省略可能) パラメーターに設定する型。 プロバイダーは、基になるデータ ソースによってサポートされているパラメーターの I/O タイプだけをサポートします。 型は、1 つ以上の DBPARAMIOENUM 値の組み合わせです。

  • DBPARAMIO_INPUT 入力パラメーター。

  • DBPARAMIO_OUTPUT 出力パラメーター。

  • DBPARAMIO_NOTPARAM アクセサーにパラメーターがありません。 行アクセサーで eParamIO をこの値に設定すると、パラメーターが無視されていることがユーザーに通知されます。

dbtype
(省略可能) 列エントリの OLE DB 型インジケーター

有効桁数 (precision)
(省略可能) 列エントリに使用する有効桁数。 詳細については、DBBINDING 構造体bPrecision 要素の説明を参照してください

scale
(省略可能) 列エントリに使用するスケール。 詳細については、DBBINDING 構造体bScale 要素の説明を参照してください

status
(省略可能) この列の状態を保持するために使用されるメンバー変数。 状態は、列の値がデータ値か NULL などの他の値かを示します。 使用できる値については、OLE DB プログラマー リファレンス状態に関する記事を参照してください。

length
(省略可能) 列のサイズをバイト単位で保持するために使用されるメンバー変数。

解説

db_param は、コマンドで使用するパラメーターを定義します。したがってこれを db_command で使用します。 たとえば、db_param を使用して、SQL クエリまたはストアド プロシージャのパラメーターをバインドできます。 ストアド プロシージャのパラメーターは疑問符 (?) で示され、パラメーターが表示される順序でデータ メンバーをバインドする必要があります。

db_param は、OLE ICommandWithParameters ベースのバインディングに参加できるメンバー データを区切ります。 指定したパラメーターのパラメーターの型 (入力または出力)、OLE DB 型、有効桁数、スケール、状態、および長さを設定します。 この属性は、OLE DB コンシューマー マクロ BEGIN_PARAM_MAP ... END_PARAM_MAP を挿入します。 db_param 属性でマークした各メンバーは、列エントリの形式でマップ内の 1 つのエントリを占有します。

db_column は、db_table 属性または db_command 属性のいずれかと組み合わせて使用されます。

コンシューマー属性プロバイダーがこの属性をクラスに適用すると、コンパイラはクラスの名前を _YourClassNameAccessor に変更します。ここで、YourClassName はユーザーがクラスに指定した名前です。コンパイラは、_YourClassNameAccessor から派生する YourClassName という名前のクラスの作成も行います。 クラス ビューでは、両方のクラスが表示されます。

次の例では、Northwind データベースの SalesbyYear ストアド プロシージャに基づいてコマンド クラスを作成します。 ストアド プロシージャの最初のパラメーターを m_RETURN_VALUE 変数に関連付け、これを出力パラメーターとして定義します。 最後の 2 つの (入力) パラメーターを m_Beginning_Date および m_Ending_Date に関連付けます。

nOutput 変数を出力パラメーターに関連付ける例を次に示します。

// db_param.cpp
// compile with: /LD
#include <atlbase.h>
#include <atlplus.h>
#include <atldbcli.h>

[ db_source(L"my_connection_string"),
  db_command(L"{ ? = CALL dbo.\"Sales by Year\"(?,?) }")
]
struct CSalesbyYear {
   DBSTATUS m_dwShippedDateStatus;
   DBSTATUS m_dwOrderIDStatus;
   DBSTATUS m_dwSubtotalStatus;
   DBSTATUS m_dwYearStatus;

   DBLENGTH m_dwShippedDateLength;
   DBLENGTH m_dwOrderIDLength;
   DBLENGTH m_dwSubtotalLength;
   DBLENGTH m_dwYearLength;

   // Bind columns
   [ db_column("1", status="m_dwShippedDateStatus", length="m_dwShippedDateLength") ] DBTIMESTAMP m_ShippedDate;
   [ db_column("2", status="m_dwOrderIDStatus", length="m_dwOrderIDLength") ] LONG m_OrderID;
   [ db_column("3", status="m_dwSubtotalStatus", length="m_dwSubtotalLength") ] CURRENCY m_Subtotal;
   [ db_column("4", status="m_dwYearStatus", length="m_dwYearLength") ] TCHAR m_Year[31];

   // Bind parameters
   [ db_param("1", paramtype="DBPARAMIO_OUTPUT") ] LONG m_RETURN_VALUE;
   [ db_param("2", paramtype="DBPARAMIO_INPUT") ] DBTIMESTAMP m_Beginning_Date;
   [ db_param("3", paramtype="DBPARAMIO_INPUT") ] DBTIMESTAMP m_Ending_Date;
};

要件

属性コンテキスト
適用対象 classstruct、メンバー、メソッド、ローカル
反復可能 いいえ
必要な属性 なし
無効な属性 なし

属性コンテキストの詳細については、「 属性コンテキスト」を参照してください。

関連項目

OLE DB コンシューマー属性