引数
このメソッドの引数は、次のとおりです。
引数 | 説明 |
---|---|
Name |
パラメータ・コレクションに追加するパラメータの名前。この名前は、パラメータを識別するため、および関連するSQL文とPL/SQL文内のプレースホルダとして使用されます。 |
Value |
パラメータの初期値を指定するVariant 。初期値によってこのパラメータのデータ型が定義されるため、重要です。 |
IOType |
SQL文とPL/SQLブロック内でのパラメータの使用方法を指定する整数コード。 |
ServerType |
このパラメータがバインドされるOracle Databaseの型を指定します。BLOB 、CLOB 、BFILE 、OBJECT 、REF 、NESTED TABLE またはVARRAY へのバインド時に、この指定が必要です。指定できる値のリストは、「ServerTypeプロパティ」のOraParameter を参照してください。 |
ObjectName |
大/小文字が区別され、Object 名を含む文字列。ServerType がORATYPE_OBJECT 、ORATYPE_VARRAY またはORATYPE_TABLE の場合にのみ、この指定が必要です。ServerType は、PL/SQLでREF が使用される場合、ORATYPE_REF に必要です。 |
IOTypeの設定
IOType
の設定内容は、次のとおりです。
設定 | 値 | 説明 |
---|---|---|
ORAPARM_INPUT |
1 | 入力変数にのみ使用 |
ORAPARM_OUTPUT |
2 | 出力変数にのみ使用 |
ORAPARM_BOTH |
3 | 入力変数と出力変数の両方に使用 |
これらの値は、oraconst.txt
ファイルにあります。
ServerType
がVAR
、VARCHAR2
および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
プロパティにアクセスする必要があることに注意してください。たとえば、IOType
がORATYPE_BOTH
で、ダイナセットから取得したOraBLOB
が入力値として渡される場合、新たに更新されたパラメータの出力値を取得するためには、SQLが実行された後にParameter
のValue
プロパティに1回アクセスする必要があります。オブジェクトは、ダイナセットから取得する場合と同様の方法でパラメータから取得されます。
Value
プロパティは、常にパラメータの最新の値を参照します。Visual BasicのNULL
値を値として渡すこともできます。Visual BasicのEMPTY
値は、BLOB
およびCLOB
データ型に対しては空のLOBを意味する目的で、OBJECT
、VARRAY
および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