OracleParameterオブジェクトは、OracleCommandまたはDataSet列のパラメータを表します。
クラスの継承
System.Object
System.MarshalByRefObject
System.Data.Common.DbParameter (ADO.NET 2.0専用)
Oracle.DataAccess.Client.OracleParameter
宣言
// ADO.NET 2.0: C# public sealed class OracleParameter : DbParameter, IDisposable, ICloneable
// ADO.NET 1.x: C#
public sealed class OracleParameter : MarshalByRefObject, IDBDataParameter,
IDataParameter, IDisposable, ICloneable
スレッド安全性
パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。
例外
ArgumentException: 型バインディングが無効です。
例
// C#
using System;
using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
class OracleParameterSample
{
static void Main()
{
string constr = "User Id=scott;Password=tiger;Data Source=oracle";
OracleConnection con = new OracleConnection(constr);
con.Open();
OracleParameter[] prm = new OracleParameter[3];
// Create OracleParameter objects through OracleParameterCollection
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "select max(empno) from emp";
int maxno = int.Parse(cmd.ExecuteScalar().ToString());
prm[0] = cmd.Parameters.Add("paramEmpno", OracleDbType.Decimal,
maxno + 10, ParameterDirection.Input);
prm[1] = cmd.Parameters.Add("paramEname", OracleDbType.Varchar2,
"Client", ParameterDirection.Input);
prm[2] = cmd.Parameters.Add("paramDeptNo", OracleDbType.Decimal,
10, ParameterDirection.Input);
cmd.CommandText =
"insert into emp(empno, ename, deptno) values(:1, :2, :3)";
cmd.ExecuteNonQuery();
Console.WriteLine("Record for employee id {0} has been inserted.",
maxno + 10);
}
}
要件
ネームスペース: Oracle.DataAccess.Client
アセンブリ: Oracle.DataAccess.dll
Microsoft .NET Frameworkバージョン1.0以降
OracleParameterメンバーは、次の各表にリストしています。
OracleParameterコンストラクタ
OracleParameterコンストラクタを、表5-69にリストします。
OracleParameter静的メソッド
OracleParameter静的メソッドを、表5-70にリストします。
OracleParameterプロパティ
OracleParameterプロパティを、表5-71にリストします。
表5-71 OracleParameterプロパティ
| プロパティ | 説明 |
|---|---|
|
配列バインドまたはPL/SQL連想配列バインドが実行される前または後に、パラメータの |
|
|
配列バインドまたはPL/SQL連想配列バインドが実行される前または後に、パラメータの |
|
|
|
|
|
|
|
|
パラメータが入力のみ、出力のみ、双方向またはストアド・ファンクションの戻り値パラメータかどうかを指定します |
|
|
|
サポート対象外 |
|
|
|
|
Oracleデータ型を指定します。 |
|
|
パラメータの名前を指定します |
|
|
|
|
|
|
|
|
データベースに送信する、またはデータベースから送信されるデータの最大サイズをバイト数または文字数で指定します。PL/SQL連想配列バインドの場合、 |
|
|
|
|
|
|
ソース列にNULLを使用できるかどうかを示す値を指定します。 ADO.NET 2.0準拠のODP.NETでのみサポートされています。 |
|
パラメータの |
|
|
|
|
|
|
パラメータがユーザー定義のデータ型の場合、Oracleユーザー定義のタイプ名を指定します |
|
|
|
OracleParameterパブリック・メソッド
OracleParameterパブリック・メソッドを、表5-72にリストします。
表5-72 OracleParameterパブリック・メソッド
| パブリック・メソッド | 説明 |
|---|---|
|
|
|
|
|
|
|
|
割り当てられたリソースを解除します |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
パラメータに関連付けられたタイプをリセットすると、パラメータに渡される値からタイプを推測できます。 ADO.NET 2.0準拠のODP.NETでのみサポートされています。 |
|
|
パラメータに関連付けられたタイプをリセットすると、パラメータに渡される値からタイプを推測できます。 ADO.NET 2.0準拠のODP.NETでのみサポートされています。 |
|
|
|
OracleParameterコンストラクタでは、OracleParameterクラスの新規インスタンスが作成されます。
オーバーロード・リスト:
このコンストラクタでは、OracleParameterクラスの新規インスタンスが作成されます。
OracleParameter (string, OracleDbType)
このコンストラクタでは、指定されたパラメータ名およびOracleデータ型を使用して、OracleParameterクラスの新規インスタンスが作成されます。
OracleParameter(string, object)
このコンストラクタでは、指定されたパラメータ名およびパラメータ値を使用して、OracleParameterクラスの新規インスタンスが作成されます。
OracleParameter(string, OracleDbType, ParameterDirection)
このコンストラクタでは、指定されたパラメータ名、データ型およびパラメータ・ディレクションを使用して、OracleParameterクラスの新規インスタンスが作成されます。
OracleParameter(string, OracleDbType, object, ParameterDirection)
このコンストラクタでは、指定されたパラメータ名、データ型、値およびディレクションを使用して、OracleParameterクラスの新規インスタンスが作成されます。
OracleParameter(string, OracleDbType, int)
このコンストラクタでは、指定されたパラメータ名、データ型およびサイズを使用して、OracleParameterクラスの新規インスタンスが作成されます。
OracleParameter(string, OracleDbType, int, string)
このコンストラクタでは、指定されたパラメータ名、データ型、サイズおよびソース列を使用して、OracleParameterクラスの新規インスタンスが作成されます。
このコンストラクタでは、指定されたパラメータ名、データ型、サイズ、ディレクション、NULLインジケータ、精度、スケール、ソース列、ソース・バージョンおよびパラメータ値を使用して、OracleParameterクラスの新規インスタンスが作成されます。
OracleParameter(string, OracleDbType, int, object, ParameterDirection)
このコンストラクタでは、指定されたパラメータ名、データ型、サイズ、値およびディレクションを使用して、OracleParameterクラスの新規インスタンスが作成されます。
このコンストラクタでは、OracleParameterクラスの新規インスタンスが作成されます。
宣言
// C# public OracleParameter();
備考
デフォルト値:
DbType: String
ParameterDirection: Input
isNullable: true
offset: 0
OracleDbType: Varchar2
ParameterAlias: 空の文字列
ParameterName: 空の文字列
Precision: 0
Size: 0
SourceColumn: 空の文字列
SourceVersion: Current
ArrayBindStatus: Success
Value: null
このコンストラクタでは、指定されたパラメータ名およびOracleデータ型を使用して、OracleParameterクラスの新規インスタンスが作成されます。
宣言
// C# public OracleParameter(string parameterName, OracleDbType oraType);
パラメータ
parameterName
パラメータ名
oraType
OracleParameterのデータ型
備考
DbTypeを変更すると、OracleDbTypeが暗黙的に変更されます。
コンストラクタで明示的に設定します。されないかぎり、すべてのプロパティにはデフォルト値があります。
デフォルト値:
DbType: String
ParameterDirection: Input
isNullable: true
offset: 0
OracleDbType: Varchar2
ParameterAlias: 空の文字列
ParameterName: 空の文字列
Precision: 0
Size: 0
SourceColumn: 空の文字列
SourceVersion: Current
ArrayBindStatus: Success
Value: null
このコンストラクタでは、指定されたパラメータ名およびパラメータ値を使用して、OracleParameterクラスの新規インスタンスが作成されます。
宣言
// C# public OracleParameter(string parameterName, object obj);
パラメータ
parameterName
パラメータ名
obj
OracleParameterの値
備考
コンストラクタで明示的に設定します。されないかぎり、すべてのプロパティにはデフォルト値があります。
デフォルト値:
DbType: String
ParameterDirection: Input
isNullable: true
offset: 0
OracleDbType: Varchar2
ParameterAlias: 空の文字列
ParameterName: 空の文字列
Precision: 0
Size: 0
SourceColumn: 空の文字列
SourceVersion: Current
ArrayBindStatus: Success
Value: null
このコンストラクタでは、指定されたパラメータ名、データ型およびパラメータ・ディレクションを使用して、OracleParameterクラスの新規インスタンスが作成されます。
宣言
// C# public OracleParameter(string parameterName, OracleDbType type, ParameterDirection direction);
パラメータ
parameterName
パラメータ名
type
OracleParameterのデータ型
direction
OracleParameterのデータ型
備考
コンストラクタで明示的に設定します。されないかぎり、すべてのプロパティにはデフォルト値があります。
デフォルト値:
DbType: String
ParameterDirection: Input
isNullable: true
offset: 0
OracleDbType: Varchar2
ParameterAlias: 空の文字列
ParameterName: 空の文字列
Precision: 0
Size: 0
SourceColumn: 空の文字列
SourceVersion: Current
ArrayBindStatus: Success
Value: null
このコンストラクタでは、指定されたパラメータ名、データ型、値およびディレクションを使用して、OracleParameterクラスの新規インスタンスが作成されます。
宣言
// C# public OracleParameter(string parameterName, OracleDbType type, object obj, ParameterDirection direction);
パラメータ
parameterName
パラメータ名
type
OracleParameterのデータ型
obj
OracleParameterの値
direction
ParameterDirection値
備考
DbTypeを変更すると、OracleDbTypeが暗黙的に変更されます。
コンストラクタで明示的に設定します。されないかぎり、すべてのプロパティにはデフォルト値があります。
デフォルト値:
DbType: String
ParameterDirection: Input
isNullable: true
offset: 0
OracleDbType: Varchar2
ParameterAlias: 空の文字列
ParameterName: 空の文字列
Precision: 0
Size: 0
SourceColumn: 空の文字列
SourceVersion: Current
ArrayBindStatus: Success
Value: null
このコンストラクタでは、指定されたパラメータ名、データ型およびサイズを使用して、OracleParameterクラスの新規インスタンスが作成されます。
宣言
// C# public OracleParameter(string parameterName, OracleDbType type, int size);
パラメータ
parameterName
パラメータ名
type
OracleParameterのデータ型
size
OracleParameter値のサイズ
備考
コンストラクタで明示的に設定します。されないかぎり、すべてのプロパティにはデフォルト値があります。
デフォルト値:
DbType: String
ParameterDirection: Input
isNullable: true
offset: 0
OracleDbType: Varchar2
ParameterAlias: 空の文字列
ParameterName: 空の文字列
Precision: 0
Size: 0
SourceColumn: 空の文字列
SourceVersion: Current
ArrayBindStatus: Success
Value: null
このコンストラクタでは、指定されたパラメータ名、データ型、サイズおよびソース列を使用して、OracleParameterクラスの新規インスタンスが作成されます。
宣言
// C# public OracleParameter(string parameterName, OracleDbType type, int size, string srcColumn);
パラメータ
parameterName
パラメータ名
type
OracleParameterのデータ型
size
OracleParameter値のサイズ
srcColumn
ソース列の名前
備考
コンストラクタで明示的に設定します。されないかぎり、すべてのプロパティにはデフォルト値があります。
デフォルト値:
DbType: String
ParameterDirection: Input
isNullable: true
offset: 0
OracleDbType: Varchar2
ParameterAlias: 空の文字列
ParameterName: 空の文字列
Precision: 0
Size: 0
SourceColumn: 空の文字列
SourceVersion: Current
ArrayBindStatus: Success
Value: null
このコンストラクタでは、指定されたパラメータ名、データ型、サイズ、ディレクション、NULLインジケータ、精度、スケール、ソース列、ソース・バージョンおよびパラメータ値を使用して、OracleParameterクラスの新規インスタンスが作成されます。
宣言
// C# public OracleParameter(string parameterName, OracleDbType oraType, int size, ParameterDirection direction, bool isNullable, byte precision, byte scale, string srcColumn, DataRowVersion srcVersion, object obj);
パラメータ
parameterName
パラメータ名
oraType
OracleParameterのデータ型
size
OracleParameter値のサイズ
direction
ParameterDirection値
isNullable
パラメータ値をnullにできるかどうかを指定するインジケータ
precision
パラメータ値の精度
scale
パラメータ値のスケール
srcColumn
ソース列の名前
srcVersion
DataRowVersion値
obj
パラメータ値
例外
ArgumentException: 指定された値は、OracleTypeのValueプロパティのタイプに属しません。
備考
コンストラクタで明示的に設定します。されないかぎり、すべてのプロパティにはデフォルト値があります。
デフォルト値:
DbType: String
ParameterDirection: Input
isNullable: true
offset: 0
OracleDbType: Varchar2
ParameterAlias: 空の文字列
ParameterName: 空の文字列
Precision: 0
Size: 0
SourceColumn: 空の文字列
SourceVersion: Current
ArrayBindStatus: Success
Value: null
このコンストラクタでは、指定されたパラメータ名、データ型、サイズ、値およびディレクションを使用して、OracleParameterクラスの新規インスタンスが作成されます。
宣言
// C# public OracleParameter(string parameterName, OracleDbType type, int size, object obj, ParameterDirection direction);
パラメータ
parameterName
パラメータ名
type
OracleParameterのデータ型
size
OracleParameter値のサイズ
obj
OracleParameterの値
direction
ParameterDirection値
備考
DbTypeを変更すると、OracleDbTypeが暗黙的に変更されます。
コンストラクタで明示的に設定します。されないかぎり、すべてのプロパティにはデフォルト値があります。
デフォルト値:
DbType: String
ParameterDirection: Input
isNullable: true
offset: 0
OracleDbType: Varchar2
ParameterAlias: 空の文字列
ParameterName: 空の文字列
Precision: 0
Size: 0
SourceColumn: 空の文字列
SourceVersion: Current
ArrayBindStatus: Success
Value: null
OracleParameter静的メソッドを、表5-73にリストします。
OracleParameterプロパティを、表5-74にリストします。
表5-74 OracleParameterプロパティ
| プロパティ | 説明 |
|---|---|
|
配列バインドまたはPL/SQL連想配列バインドが実行される前または後に、パラメータの |
|
|
配列バインドまたはPL/SQL連想配列バインドが実行される前または後に、パラメータの |
|
|
|
|
|
|
|
|
パラメータが入力のみ、出力のみ、双方向またはストアド・ファンクションの戻り値パラメータかどうかを指定します |
|
|
|
サポート対象外 |
|
|
|
|
Oracleデータ型を指定します。 |
|
|
パラメータの名前を指定します |
|
|
|
|
|
|
|
|
データベースに送信する、またはデータベースから送信されるデータの最大サイズをバイト数または文字数で指定します。PL/SQL連想配列バインドの場合、 |
|
|
|
|
|
|
ソース列にNULLを使用できるかどうかを示す値を指定します。 ADO.NET 2.0準拠のODP.NETでのみサポートされています。 |
|
パラメータの |
|
|
|
|
|
|
パラメータがユーザー定義のデータ型の場合、Oracleユーザー定義のタイプ名を指定します |
|
|
|
このプロパティは、データベースに送信する、またはデータベースから送信される、各配列要素のデータの最大サイズを、バイト数または文字数で指定します。このプロパティは、配列バインドまたはPL/SQL連想配列の実行に使用されます。
宣言
// C#
public int[] ArrayBindSize {get; set; }
プロパティ値
サイズを指定する整数の配列
備考
デフォルト = null
このプロパティは、配列バインドまたはPL/SQL連想配列の可変サイズの要素タイプにのみ使用されます。固定サイズの要素タイプでは、このプロパティは無視されます。
ArrayBindSizeの各要素は、Valueプロパティの要素のバインド・サイズに対応しています。実行前は、ArrayBindSizeにより、Valueプロパティにバインドされる各要素の最大サイズが指定されています。実行後は、Valueプロパティに戻された各要素のサイズが含まれます。
PL/SQL連想配列のバインドの場合、要素は可変長の要素タイプであり、このプロパティはInputOutput、Out、またはReturnValueパラメータとして適切に設定する必要があります。ArrayBindSizeの要素数は、OracleParameter.Sizeプロパティで指定されている値と同じである必要があります。
例
// C#
using System;
using System.Data;
using Oracle.DataAccess.Client;
class ArrayBindSizeSample
{
static void Main()
{
string constr = "User Id=scott;Password=tiger;Data Source=oracle";
OracleConnection con = new OracleConnection(constr);
con.Open();
OracleParameter[] prm = new OracleParameter[3];
// Create OracleParameter objects through OracleParameterCollection
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "select max(empno) from emp";
int maxno = int.Parse(cmd.ExecuteScalar().ToString());
// Set the ArrayBindCount for Array Binding
cmd.ArrayBindCount = 2;
prm[0] = cmd.Parameters.Add("paramEmpno", OracleDbType.Decimal,
new int[2] {maxno + 10, maxno + 11}, ParameterDirection.Input);
prm[1] = cmd.Parameters.Add("paramEname", OracleDbType.Varchar2,
new string[2] {"Client1xxx", "Client2xxx"}, ParameterDirection.Input);
prm[2] = cmd.Parameters.Add("paramDeptNo", OracleDbType.Decimal,
new int[2] {10, 10}, ParameterDirection.Input);
// Set the ArrayBindSize for prm[1]
// These sizes indicate the maximum size of the elements in Value property
prm[1].ArrayBindSize = new int[2];
prm[1].ArrayBindSize[0] = 7; // Set ename = "Client1"
prm[1].ArrayBindSize[1] = 7; // Set ename = "Client2"
cmd.CommandText =
"insert into emp(empno, ename, deptno) values(:1, :2, :3)";
cmd.ExecuteNonQuery();
Console.WriteLine("Record for employee id {0} has been inserted.",
maxno + 10);
Console.WriteLine("Record for employee id {0} has been inserted.",
maxno + 11);
prm[0].Dispose();
prm[1].Dispose();
prm[2].Dispose();
cmd.Dispose();
con.Close();
con.Dispose();
}
}
|
関連項目: |
このプロパティでは、配列バインドまたはPL/SQL連想配列の実行前または実行後における、Valueプロパティの各要素の入力または出力ステータスが指定されます。
宣言
// C#
public OracleParameterStatus[] ArrayBindStatus { get; set; }
プロパティ値
OracleParameterStatusの列挙値の配列
例外
ArgumentOutofRangeException: 指定されたStatusの値が無効です。
備考
デフォルト = null
ArrayBindStatusは、配列バインドおよびPL/SQL連想配列の実行にのみ使用されます。
実行前は、ArrayBindStatusにより、Valueプロパティの各要素のバインド・ステータスが示されています。実行後は、Valueプロパティの各要素の実行ステータスが含まれます。
このプロパティは、OracleParameterがコレクションを表すかどうかを指定し、コレクションを表す場合は、コレクション型を指定します。
宣言
// C#
public OracleCollectionType CollectionType { get; set; }
プロパティ値
OracleCollectionTypeの列挙値
例外
ArgumentException: 指定されたOracleCollectionType値が無効です。
備考
デフォルト = OracleCollectionType.NonePL/SQL連想配列のバインドにOracleParameterが使用されている場合、CollectionTypeは、OracleCollectionType.PLSQLAssociativeArrayに設定する必要があります。
このプロパティは、Data.DbTypeの列挙型を使用して、パラメータのデータ型を指定します。
宣言
// ADO.NET 2.0: C#
public override DbType DbType {get; set; }
// ADO.NET 1.x: C#
public DbType DbType {get; set; }
プロパティ値
DbTypeの列挙値
実装
IDataParameter
例外
ArgumentException: 指定されたDbType値が無効です。
備考
デフォルト = DbType.String
配列バインドまたはPL/SQL連想配列のバインド実行にOracleParameterオブジェクトが使用されている場合、配列内の各要素のデータ型はDbTypeです。
DbTypeプロパティとOracleDbTypeプロパティの間にリンクがあるため、DbTypeプロパティが設定されている場合、OracleDbTypeプロパティはDbTypeから推論されます。
このプロパティは、パラメータが入力専用、出力専用、双方向またはストアド・ファンクションの戻り値パラメータであるかどうかを指定します。
宣言
// ADO.NET 2.0: C#
public override ParameterDirection Direction { get; set; }
// ADO.NET 1.x: C#
public ParameterDirection Direction { get; set; }
プロパティ値
ParameterDirectionの列挙値
実装
IDataParameter
例外
ArgumentOutOfRangeException: 指定されたParameterDirectionの値が無効です。
備考
デフォルト = ParameterDirection.Input
可能な値:Input、InputOutput、OutputおよびReturnValue
このプロパティは、サポートされていません。
宣言
// ADO.NET 2.0: C#
public override bool IsNullable { get; set; }
// ADO.NET 1.x: C#
public bool IsNullable { get; set; }
実装
IDataParameter
プロパティ値
このプロパティは、サポートされていません。
このプロパティは、Valueプロパティに対するオフセットを指定します。
宣言
// C#
public int Offset { get; set; }
プロパティ値
オフセットを指定するint
例外
ArgumentOutOfRangeException: 指定されたOffsetの値が無効です。
備考
デフォルト = 0
配列バインドおよびPL/SQL連想配列バインドの場合、Offsetは、Valueプロパティ内のすべての要素に適用されます。
Offsetプロパティは、バイナリおよび文字列のデータ型に使用されます。Offsetプロパティは、バイナリ型のバイト数および文字列の文字数を表します。nullが参照されている場合、文字列のカウントには終了文字は含まれません。Offsetプロパティは、次の型のパラメータで使用されます。
OracleDbType.BFile
OracleDbType.Blob
OracleDbType.LongRaw
OracleDbType.Raw
OracleDbType.Char
OracleDbType.Clob
OracleDbType.NClob
OracleDbType.NChar
OracleDbType.NVarchar2
OracleDbType.Varchar2
このプロパティは、Oracleデータ型を指定します。
宣言
// C#
public OracleDbType OracleDbType { get; set; }
プロパティ値
OracleDbTypeの列挙値
備考
デフォルト = OracleDbType.Varchar2
OracleParameterオブジェクトが配列バインドまたはPL/SQL連想配列バインドの実行に使用される場合、OracleDbTypeは、配列内の各要素のデータ型になります。
OracleDbTypeプロパティとDbTypeプロパティは、リンクされています。したがって、OracleDbTypeプロパティを設定すると、DbTypeプロパティが、サポートしているDbTypeに変更されます。
このプロパティは、パラメータの名前を指定します。
宣言
// ADO.NET 2.0: C#
public override string ParameterName { get; set; }
// ADO.NET 1.x: C#
public string ParameterName { get; set; }
プロパティ値
String
実装
IDataParameter
備考
デフォルト = null
最大30文字のParameterNameがサポートされています。
このプロパティは、Valueプロパティを表すのに使用される桁の最大数を指定します。
宣言
// C#
Public byte Precision { get; set; }
プロパティ値
byte
備考
デフォルト = 0
Precisionプロパティは、OracleDbType.Decimal型のパラメータで使用されます。
0から38の範囲のPrecisionがサポートされています。
配列バインドおよびPL/SQL連想配列バインドの場合、Precisionは、Valueプロパティの各要素に適用されます。
このプロパティは、Valueプロパティが解決される小数点以下の桁数を指定します。
宣言
// C#
public byte Scale { get; set; }
プロパティ値
byte
備考
デフォルト = 0
Scaleは、OracleDbType.Decimal型のパラメータで使用されます。
-84から127までのScaleがサポートされています。
配列バインドおよびPL/SQL連想配列バインドの場合、Scaleは、Valueプロパティの各要素に適用されます。
このプロパティは、データベースに送信する、またはデータベースから送信されるデータの最大サイズを、バイト数または文字数で指定します。
宣言
// ADO.NET 2.0: C#
public override int Size { get; set;}
// ADO.NET 1.x: C#
public int Size { get; set;}
プロパティ値
int
例外
ArgumentOutOfRangeException: 指定したSize値が無効です。
InvalidOperationException: OracleParameterオブジェクトがPL/SQL連想配列のバインドに使用される場合は、Size = 0になります。
備考
PL/SQL連想配列バインドの場合、Sizeは、PL/SQL連想配列内の要素の最大数を指定します。
Sizeが明示的に設定されていない場合は、入力パラメータに対するバインド時にのみ、指定されたパラメータ値の実際のサイズから推測されます。出力パラメータは、サイズが明示的に定義されている必要があります。
デフォルト値は0です。
実行前は、このプロパティは、Valueプロパティでバインドされる最大サイズを指定します。実行後は、Valueプロパティの型のサイズを格納します。
Sizeは、次の型のパラメータに使用されます。
OracleDbType.Blob
OracleDbType.Char
OracleDbType.Clob
OracleDbType.LongRaw
OracleDbType.NChar
OracleDbType.NClob
OracleDbType.NVarchar2
OracleDbType.Raw
OracleDbType.Varchar2
Sizeの値は、次のように処理されます。
固定長のデータ型: 無視
可変長のデータ型: データベースに送信する、またはデータベースから送信されるデータの最大量を示します。文字データの場合、Sizeは文字数、バイナリ・データの場合は、バイト数になります。
Sizeが明示的に設定されていない場合は、バインド時に指定されたパラメータ値の実際のサイズから推測されます。
|
注意: Sizeには、文字列データのNULLで終了する文字は含まれません。 |
OracleParameterオブジェクトがPL/SQL連想配列のバインドに使用される場合、Sizeは、PL/SQL連想配列内の要素の最大数を指定します。実行前は、このプロパティは、PL/SQL連想配列内の要素の最大数を指定します。実行後は、PL/SQL連想配列内で返された要素の現行の数を指定します。OutputおよびInputOutputパラメータと戻り値の場合、Sizeは、PL/SQL連想配列内の要素の最大数を指定します。
ODP.NETでは、空のPL/SQL連想配列のバインドはサポートされていません。したがって、OracleParameterオブジェクトがPL/SQL連想配列のバインドに使用される場合、Sizeを0に設定することはできません。
このプロパティは、DataSetのDataTable列の名前を指定します。
宣言
// ADO.NET 2.0: C#
public override string SourceColumn { get; set; }
// ADO.NET 1.x: C#
public string SourceColumn { get; set; }
プロパティ値
string
実装
IDataParameter
備考
デフォルト = 空の文字列
このプロパティでは、ソース列にNULLを使用できるかどうかを示す値を指定します。
宣言
// ADO.NET 2.0: C#
public bool SourceColumnNullMapping { get; set; }
プロパティ値
ソース列を無効にできる場合はtrueを戻し、それ以外の場合はfalseを戻します。
備考
デフォルト値はfalseです。
このプロパティは、パラメータのValueプロパティをロードするときに使用するDataRowVersion値を指定します。
宣言
// ADO.NET 2.0: C#
public override DataRowVersion SourceVersion { get; set; }
// ADO.NET 1.x: C#
public DataRowVersion SourceVersion { get; set; }
プロパティ値
DataRowVersion
実装
IDataParameter
例外
ArgumentOutOfRangeException: 指定したDataRowVersion値が無効です。
備考
デフォルト = DataRowVersion.Current
SourceVersionはOracleDataAdapter.Update中にOracleDataAdapter.UpdateCommand()で使用され、パラメータ値に元の値または現行の値が使用されるかどうかを決定します。これにより、主キーの更新が可能になります。このプロパティは、OracleDataAdapter.InsertCommand()およびOracleDataAdapter.DeleteCommand()では無視されます。
このプロパティは、Valueプロパティ内のデータに関連する実行のステータスを示します。
宣言
// C#
public OracleParameterStatus Status { get; set; }
プロパティ値
OracleParameterStatusの列挙値
例外
ArgumentOutOfRangeException: 指定したStatus値が無効です。
備考
デフォルト = OracleParameterStatus.Success
実行前は、このプロパティは、Valueプロパティに関連するバインド・ステータスを示します。実行後は、実行のステータスを戻します。
Statusが示す内容は、次のとおりです。
列からNULLがフェッチされたかどうか。
フェッチ中に切捨てが発生したかどうか。切捨てが発生した場合、Valueがデータを保持するには不足していることを示します。
NULLがデータベース列に挿入されるかどうか。挿入される場合、Valueは無視され、NULLがデータベース列に挿入されます。
このプロパティは、配列バインドおよびPL/SQL連想配列バインドの場合は無視されます。かわりに、ArrayBindStatusプロパティが使用されます。
このプロパティでは、パラメータがユーザー定義のデータ型の場合、Oracleユーザー定義のタイプ名を指定します。
宣言
// C#
public string UdtTypeName {get; set;}
プロパティ値
Oracle UDTの名前。
備考
UdtTypeNameプロパティはパラメータのユーザー定義のタイプ名に対応します。このプロパティは、パラメータがユーザー定義のタイプは必ず指定される必要があります。カスタム・オブジェクトが入力パラメータ値として提供される場合、コマンドの実行に使用する接続のカスタム・タイプ・マッピングで指定されたOracle UDTに変換されることに注意してください。アプリケーションがパラメータ・タイプのサブタイプを表すカスタム・オブジェクトをバインドする場合、カスタム・タイプ・マッピングで指定されたOracle UDTとOracleParamter.UdtTypeNameプロパティで指定されたOracle UDTは異なります。
このプロパティは、Parameterの値を指定します。
宣言
// ADO.NET 2.0: C#
public override object Value { get; set; }
// ADO.NET 1.x: C#
public object Value { get; set; }
プロパティ値
object
実装
IDataParameter
例外
ArgumentException: 指定したValueプロパティが無効です。
InvalidArgumentException: 指定したValueプロパティが無効です。
備考
デフォルト = null
OracleParameterオブジェクトが配列バインドまたはPL/SQL連想配列に使用される場合、Valueは、パラメータ値の配列になります。
Valueプロパティは、OracleDataAdapter.Update()によって上書きできます。
IConvertibleインタフェースをサポートしている場合、プロバイダは、値の型を変換しようとします。指定した型と値に互換性がない場合、変換エラーが発生します。
データベースにnullパラメータ値を送信する場合、ユーザーは、nullではなくDBNullを指定する必要があります。システム内のnull値は、値を持たない空のオブジェクトです。DBNullは、null値を表すのに使用されます。ユーザーは、StatusをOracleParameterStatus.NullValueに設定して、null値を指定することもできます。この場合、プロバイダはデータベースにnull値を送信します。
OracleDbTypeおよびDbTypeのいずれも設定されていない場合、値はValueから推測されます。関連情報は、次の項目を参照してください。
入力パラメータの場合、値は次のようになります。
データベースに送信されるOracleCommandにバインドされます。
プロバイダがデータをデータベースに送信するときに、OracleDbTypeまたはDbTypeで指定されたデータ型に変換されます。
出力パラメータの場合、値は次のようになります。
OracleCommandの完了時に設定されます(戻り値パラメータの場合にも当てはまります)。
データベースからのデータに対して、OracleDbTypeまたはDbTypeで指定されたデータ型に設定されます。
配列バインディングは、次のパラメータとともに使用します。
入力パラメータ: Valueは、値の配列に設定する必要があります。バインドされる要素の数を示すために、OracleCommand.ArrayBindCountをゼロより大きい値に設定する必要があります。
配列内の要素の数は、OracleCommand.ArrayBindCountプロパティと同じである必要があります。同じでない場合、配列内の要素のバインドには、要素の最小値が使用されます。
出力パラメータ: 取得される要素の数を示すために、OracleCommand.ArrayBindCountをゼロより大きい値に設定する必要があります(SELECT文の場合)。
PL/SQL連想配列バインディングは、次のパラメータとともに使用します。
入力パラメータ: Valueは、値の配列に設定する必要があります。CollectionTypeは、OracleCollection.PLSQLAssociativeArrayに設定する必要があります。Sizeを設定して、PL/SQL連想配列内で可能な配列要素の最大数を指定する必要があります。SizeがValueの要素の数より少ない場合、Sizeは、バインドされるValueプロパティの要素の数を指定します。
出力パラメータ: CollectionTypeは、OracleCollection.PLSQLAssociativeArrayに設定する必要があります。Sizeを設定して、PL/SQL連想配列内の配列要素の最大数を指定する必要があります。
各パラメータには、1つの値が必要です。null値を使用してパラメータをバインドするには、ValueをDBNull.Valueに設定するか、StatusをOracleParameterStatus.NullInsertに設定します。
OracleParameterパブリック・メソッドを、表5-75にリストします。
表5-75 OracleParameterパブリック・メソッド
| パブリック・メソッド | 説明 |
|---|---|
|
|
|
|
|
|
|
|
割り当てられたリソースを解除します |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
パラメータに関連付けられたタイプをリセットすると、パラメータに渡される値からタイプを推測できます。 ADO.NET 2.0準拠のODP.NETでのみサポートされています。 |
|
|
パラメータに関連付けられたタイプをリセットすると、パラメータに渡される値からタイプを推測できます。 ADO.NET 2.0準拠のODP.NETでのみサポートされています。 |
|
|
|
このメソッドでは、OracleParameterオブジェクトのシャロー・コピーが作成されます。
宣言
// C# public object Clone();
戻り値
OracleParameterオブジェクト
実装
ICloneable
備考
複製されたオブジェクトのプロパティ値は、複製元のオブジェクトのプロパティ値と同じです。
例
// C#
using System;
using System.Data;
using Oracle.DataAccess.Client;
class CloneSample
{
static void Main()
{
OracleParameter prm1 = new OracleParameter();
// Prints "prm1.ParameterName = "
Console.WriteLine("prm1.ParameterName = " + prm1.ParameterName);
// Set the ParameterName before cloning
prm1.ParameterName = "MyParam";
// Clone the OracleParameter
OracleParameter prm2 = (OracleParameter) prm1.Clone();
// Prints "prm2.ParameterName = MyParam"
Console.WriteLine("prm2.ParameterName = " + prm2.ParameterName);
prm1.Dispose();
prm2.Dispose();
}
}
このメソッドでは、OracleParameterオブジェクトに割り当てられたリソースが解除されます。
宣言
// C# public void Dispose();
実装
IDisposable
このメソッドでは、パラメータに渡される値からタイプを推測するために、パラメータに関連付けられたタイプをリセットします。
宣言
// ADO.NET 2.0: C# public override void ResetDbType();
備考
アプリケーションがOracleParameterオブジェクトのDbTypeまたはOracleDbTypeプロパティを設定していない場合、これらの値はアプリケーションがOracleParameterオブジェクトに設定した値から推測されます。ResetDbTypeメソッドをコールするとこれらのプロパティはリセットされるため、OracleParameterはOracleParameterに渡される値から再度そのタイプを推測できます。このメソッドをコールすると、OracleParameterオブジェクトのDbTypeおよびOracleDbTypeプロパティの両方に影響します。
このメソッドでは、パラメータに渡される値からタイプを推測するために、パラメータに関連付けられたタイプをリセットします。
宣言
// ADO.NET 2.0: C# public override void ResetOracleDbType();
備考
アプリケーションがOracleParameterオブジェクトのDbTypeまたはOracleDbTypeプロパティを設定していない場合、これらの値はアプリケーションがOracleParameterオブジェクトに設定した値から推測されます。ResetOracleDbTypeメソッドをコールするとこれらのプロパティはリセットされるため、OracleParameterはOracleParameterに渡される値から再度そのタイプを推測できます。このメソッドをコールすると、OracleParameterオブジェクトのDbTypeおよびOracleDbTypeプロパティの両方に影響します。