次の方法で共有


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_paramdb_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、メンバー、メソッド、ローカル

複数回の適用

不要

必要な属性

[なし]

無効な属性

[なし]

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

参照

その他の技術情報

OLE DB コンシューマー属性

ATL サンプル