db_param
指定したメンバ変数を入力または出力パラメータに関連付け、変数を区切ります。
[ db_param(
ordinal,
paramtype="DBPARAMIO_INPUT",
dbtype,
precision,
scale,
status,
length
) ]
パラメータ
ordinal
データを連結する行セットのフィールドに対応する列番号 (DBCOLUMNINFO 序数)。paramtype (省略可能)
設定するパラメータの型。プロバイダは、基になるデータ ソースによってサポートされているパラメータ I/O 型だけをサポートします。型は、次の DBPARAMIOENUM 値の 1 つ以上の組み合わせです。DBPARAMIO_INPUT 入力パラメータです。
DBPARAMIO_OUTPUT 出力パラメータです。
DBPARAMIO_NOTPARAM アクセサにはパラメータがありません。行アクセサで eParamIO にこの値を設定すると、ユーザーにはパラメータが無視されることが通知されます。
dbtype (省略可能)
列エントリの OLE DB Type Indicator。precision (省略可能)
列エントリに使用する有効桁数。詳細については、「DBBINDING Structures」の bPrecision 要素の説明を参照してください。scale (省略可能)
列エントリに使用する小数部桁数。詳細については、「DBBINDING Structures」の bScale 要素の説明を参照してください。status (省略可能)
この列のステータスを保持するメンバ変数。ステータスは、列の値がデータ値であるか、NULL などのその他の値であるかを示します。ステータス値の詳細については、『OLE DB Programmer's Reference』の「Status」を参照してください。length (省略可能)
列サイズのバイト数を保持するメンバ変数。
解説
db_param は、コマンドで使用するパラメータを定義します。したがって、db_param は db_command と共に使用します。たとえば、db_param を使用して SQL クエリまたはストアド プロシージャのパラメータを連結できます。ストアド プロシージャのパラメータは疑問符 (?) で表します。データ メンバは、パラメータが出現する順に連結する必要があります。
db_param は、OLE DB の ICommandWithParameters ベースの連結に関連するメンバ データを区切ります。また、指定したパラメータについて、パラメータの型 (入力または出力)、OLE DB の型、有効桁数、小数部桁数、ステータス、および長さを設定します。この属性は、OLE DB コンシューマ マクロの BEGIN_PARAM_MAP ...END_PARAM_MAP を挿入します。属性 db_param を設定するメンバは、COLUMN_ENTRY の形式でマップの 1 つのエントリになります。
db_param は、db_table または db_command のいずれかの属性と組み合わせて使用します。
コンシューマ属性プロバイダがこの属性をクラスに適用すると、コンパイラはクラスの名前を _YourClassNameAccessor (YourClassName はクラスの名前) に変更します。さらに、コンパイラは、_YourClassName から派生した 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;
};
必要条件
属性コンテキスト
対象 |
class、struct、メンバ、メソッド、ローカル |
複数回の適用 |
不可 |
必要な属性 |
なし |
無効な属性 |
なし |
属性コンテキストの詳細については、「属性コンテキスト」を参照してください。