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、メンバー、メソッド、ローカル |
複数回の適用 |
不要 |
必要な属性 |
[なし] |
無効な属性 |
[なし] |
属性コンテキストの詳細については、「属性コンテキスト」を参照してください。