sql >> データベース >  >> RDS >> Oracle

C#およびODP.NETからパッケージ内の関数を呼び出すためのコード

    これはこのフォーラムでの私の最初の質問であり、私自身の回答に投稿できてうれしいです。

    CommandType.StoredProcedureを設定することにより、ODP.NETを使用してOracleパッケージ関数を呼び出すことができます。 。

    ORA-06550: line 1, column 7:
    PLS-00221: 'INSERT_FUNC' is not a procedure or is undefined
    ORA-06550: line 1, column 7: PL/SQL: Statement ignored
    

    このエラーが発生した場合は、コマンドオブジェクトの最初のパラメータとして次の行を追加するだけです。

    cmd.Parameters.Add("Return_Value", OracleDbType.Int16,
        ParameterDirection.ReturnValue);
    

    動作するコードは次のとおりです:

    using (var conn = new OracleConnection(oradb))
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "PKG_NAME.INSERT_FUNC";
    
        cmd.BindByName = true;
    
        cmd.Parameters.Add("Return_Value", OracleDbType.Int16,
            ParameterDirection.ReturnValue);
        cmd.Parameters.Add("i_description", OracleDbType.Varchar2, 1000,
            promotionEventSetupDetails.PromotionDescription,
            ParameterDirection.Input);
        cmd.Parameters.Add("i_theme", OracleDbType.Varchar2, 80,
            promotionEventSetupDetails.PromotionTheme,
            ParameterDirection.Input);
        cmd.Parameters.Add("o_id", OracleDbType.Varchar2,
            ParameterDirection.Output);
        cmd.Parameters.Add("o_error_msg", OracleDbType.Varchar2,
            ParameterDirection.Output);
    
        conn.Open();
        using (var dr = cmd.ExecuteReader())
        {
            // do some work here
        }
    }
    


    1. mysqli:1つのステートメントで複数のクエリを準備できますか?

    2. SQL Server(T-SQL)でデータファイルのファイルサイズを大きくする方法

    3. MariaDBでのSQRT()のしくみ

    4. Knee-Jerk PerfMonカウンター:ページの平均余命