ヘッダーをスキップ
Oracle® Objects for OLE開発者ガイド
11gリリース2 (11.2) for Microsoft Windows
B58887-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

Addメソッド

説明

OraParametersコレクションにパラメータを追加します。

使用方法

oraparameters.Add Name, Value, IOType, ServerType, ObjectName 

引数

このメソッドの引数は、次のとおりです。

引数 説明
Name パラメータ・コレクションに追加するパラメータの名前。この名前は、パラメータを識別するため、および関連するSQL文とPL/SQL文内のプレースホルダとして使用されます。
Value パラメータの初期値を指定するVariant。初期値によってこのパラメータのデータ型が定義されるため、重要です。
IOType SQL文とPL/SQLブロック内でのパラメータの使用方法を指定する整数コード。
ServerType このパラメータがバインドされるOracle Databaseの型を指定します。BLOBCLOBBFILEOBJECTREFNESTED TABLEまたはVARRAYへのバインド時に、この指定が必要です。指定できる値のリストは、「ServerTypeプロパティ」OraParameterを参照してください。
ObjectName 大/小文字が区別され、Object名を含む文字列。ServerTypeORATYPE_OBJECTORATYPE_VARRAYまたはORATYPE_TABLEの場合にのみ、この指定が必要です。ServerTypeは、PL/SQLでREFが使用される場合、ORATYPE_REFに必要です。

IOTypeの設定

IOTypeの設定内容は、次のとおりです。

設定 説明
ORAPARM_INPUT 1 入力変数にのみ使用
ORAPARM_OUTPUT 2 出力変数にのみ使用
ORAPARM_BOTH 3 入力変数と出力変数の両方に使用

これらの値は、oraconst.txtファイルにあります。

ServerTypeVARVARCHAR2およびORATYPE_RAW_BINであるORAPARM_OUTPUT変数の最大サイズは、デフォルトで128バイトに設定されます。この値を変更するには、MinimumSizeプロパティを使用します。VARおよびVARCHAR2に対するORAPARM_OUTPUT変数の最小サイズは、データベースの列から予測されるデータのサイズより常に大きい値に設定する必要があります。

この値が正しいことを確認してください。パラメータのタイプがINであるストアド・プロシージャに対してORAPARM_BOTHなど、不正なオプションを指定すると、結果はエラーになります。ORAPARM_BOTHは、INおよびOUTのパラメータ専用です。INパラメータを持つストアド・プロシージャとOUTパラメータを持つ別のストアド・プロシージャに対してこれを使用するわけではありません。この場合は、2つのパラメータを使用します。このようなエラーが発生することはまれですが、パラメータに関するエラーが発生した場合は、IOTypeが正しいことを確認してください。

Value引数には、OraBLOBなどのOracle Database 10gオブジェクトを使用できます。その時点でオブジェクトのコピーが作成されるので、パラメータの値を参照する新規オブジェクトを取得するためにValueプロパティにアクセスする必要があることに注意してください。たとえば、IOTypeORATYPE_BOTHで、ダイナセットから取得したOraBLOBが入力値として渡される場合、新たに更新されたパラメータの出力値を取得するためには、SQLが実行された後にParameterValueプロパティに1回アクセスする必要があります。オブジェクトは、ダイナセットから取得する場合と同様の方法でパラメータから取得されます。

Valueプロパティは、常にパラメータの最新の値を参照します。Visual BasicのNULL値を値として渡すこともできます。Visual BasicのEMPTY値は、BLOBおよびCLOBデータ型に対しては空のLOBを意味する目的で、OBJECTVARRAYおよびNESTED TABLEデータ型に対してはオブジェクトの属性がすべてNULLであることを意味する目的で使用できます。

備考

パラメータを使用して、(SQL文を再構築するかわりに)SQLバインド変数を表します。SQLバインド変数は、問合せを再解析することなくパラメータ値を変更できるため便利です。SQLバインド変数は、入力変数としてのみ使用します。

パラメータを使用して、PL/SQLバインド変数を表すこともできます。PL/SQLのバインド変数は、入力と出力両方の変数として使用できます。

Oracle Raw型の列にバインドする場合は、ServerType値にORATYPE_RAW_BINを使用します。値のPutまたはGetには、バイト配列を使用します。ORATYPE_RAW_BINバインド・バッファの最大許容サイズは、表の列にバインドする場合は2000バイト、ストアド・プロシージャにバインドする場合は32KBです。コード例は、ORACLE_BASE\\ORACLE_HOME\OO4O\VB\Rawディレクトリにあるサンプルを参照してください。

この例では、AddおよびRemoveパラメータ・メソッド、ServerTypeパラメータ・プロパティ、(ORAEXAMP.SQLにある)ストアド・プロシージャおよびファンクションをコールするExecuteSQLデータベース・メソッドの使用方法を示します。このコードをコピーして、フォームの定義セクションに貼り付けてください。次に[F5]を押します。

Sub Form_Load () 
 
'Declare variables 
Dim OraSession As OraSession 
Dim OraDatabase As OraDatabase 
 
'Create the OraSession Object. 
Set OraSession = CreateObject("OracleInProcServer.XOraSession") 
 
'Create the OraDatabase Object. 
Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&) 
 
'Add EMPNO as an Input/Output parameter and set its initial value. 
OraDatabase.Parameters.Add "EMPNO", 7369, ORAPARM_INPUT 
OraDatabase.Parameters("EMPNO").ServerType = ORATYPE_NUMBER 
 
'Add ENAME as an Output parameter and set its initial value. 
OraDatabase.Parameters.Add "ENAME", 0, ORAPARM_OUTPUT 
OraDatabase.Parameters("ENAME").ServerType = ORATYPE_VARCHAR2 
 
'Add SAL as an Output parameter and set its initial value. 
OraDatabase.Parameters.Add "SAL", 0, ORAPARM_OUTPUT 
OraDatabase.Parameters("SAL").ServerType = ORATYPE_NUMBER 
 
'Execute the Stored Procedure Employee.GetEmpName to retrieve ENAME. 
' This Stored Procedure can be found in the file ORAEXAMP.SQL. 
OraDatabase.ExecuteSQL ("Begin Employee.GetEmpName (:EMPNO, :ENAME); end;")
'Display the employee number and name. 
 
'Execute the Stored Function Employee.GetSal to retrieve SAL. 
' This Stored Function can be found in the file ORAEXAMP.SQL. 
OraDatabase.ExecuteSQL ("declare SAL number(7,2); Begin" & _
           ":SAL:=Employee.GetEmpSal (:EMPNO); end;") 
 
'Display the employee name, number and salary. 
MsgBox "Employee " & OraDatabase.Parameters("ENAME").value & ", #" & _
          OraDatabase.Parameters("EMPNO").value & ",Salary=" & _
          OraDatabase.Parameters("SAL").value 
 
'Remove the Parameters. 
OraDatabase.Parameters.Remove "EMPNO" 
OraDatabase.Parameters.Remove "ENAME" 
OraDatabase.Parameters.Remove "SAL" 
 
End Sub