次の方法で共有


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 サンプル