0

Oracleでこのselectステートメントを実行する必要があります。

(TSQL for MS SQLの例):

select @maxvalue = isnull(max(MYFIELD),0) from mytable

Oracleは次のようなものだと思います。

select nvl(max(MYFIELD),0) into maxvalue from mytable

しかし、.NETコネクタのmaxvalueにパラメータをロードしたoracleステートメントを呼び出すことはできますか、それともBEGIN ENDブードゥーが必要ですか?(MSではなくOracle .NETコネクタを使用しています。)

4

1 に答える 1

2

両方を行うことができます(「ブードゥー」の有無にかかわらず):

        // without voodoo

        OracleCommand ncmd = new OracleCommand("select nvl(max(MYFIELD),0) from mytable", conn);

        ncmd.CommandType = CommandType.Text;

        object r = ncmd.ExecuteScalar();

        Console.WriteLine("a: " + r);
        Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

        // with the voodoo

        ncmd.CommandText = "begin select nvl(max(MYFIELD),0) into :maxvalue from mytable; end;";
        ncmd.CommandType = CommandType.Text;

        OracleParameter res = new OracleParameter(":res", OracleDbType.Double);
        res.Direction = ParameterDirection.ReturnValue;
        ncmd.Parameters.Add(res);

        ncmd.ExecuteNonQuery();

        Console.WriteLine("b: " + res.Value);
        Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
于 2012-06-20T11:31:25.837 に答える