TimesTen組込みプロシージャのサポート
TimesTen組込みプロシージャは、結果セットを戻さない組込みのみ、TimesTen OCIから直接コールできます。したがって、この制限は、ODP.NET for TimesTenにも適用されます。
次の例のように、OracleCommand
インスタンスを使用し、組込みをコールします。ここでは、TimesTenへの接続がすでに確立されているOracleConnection
インスタンスconn
を想定しています。OracleCommand
インスタンスを使用し終えたら、Dispose
メソッドをコールし、リソースを解放します。
// switching to passthrough 1 mode using ttOptSetFlag built-in function
string switchModeStmt = "call ttOptSetFlag('passthrough', 1)";
OracleCommand switchCmd = new OracleCommand(switchModeStmt, conn);
switchCmd.CommandType = CommandType.Text;
switchCmd.ExecuteNonQuery();
switchCmd.Dispose();
結果セットを戻す組込みプロシージャについては、ODP.NETを介して結果セットに直接アクセスすることはできません。ただし、PL/SQLから組込みをコールする場合は、OUT
パラメータとしてアクセスできます。次に例を示します。
int passThruValue = -1;
OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = "declare v_name varchar2(255); begin execute immediate
'call ttOptGetFlag(''passthrough'')' into v_name, :rc1; end;";
cmd.Parameters.Add("rc1", OracleDbType.Int32, -1, ParameterDirection.Output);
cmd.ExecuteNonQuery();
passThruValue = Convert.ToInt32(cmd.Parameters[0].Value.ToString());
cmd.Parameters.Clear();
cmd.Dispose();