Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Mã để gọi một hàm trong một gói từ C # và ODP.NET

Đây là câu hỏi đầu tiên của tôi trên diễn đàn này và tôi rất vui được đăng lên câu trả lời của chính mình.

Chúng ta có thể gọi một hàm gói oracle bằng ODP.NET bằng cách đặt CommandType.StoredProcedure .

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

Nếu bạn gặp lỗi này, chỉ cần thêm dòng này làm tham số đầu tiên trên đối tượng lệnh:

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

Đây là mã làm việc:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Từ khóa 'CONTINUE' trong Oracle 10g PL / SQL

  2. BEGIN - END khối giao dịch nguyên tử trong PL / SQL

  3. Cách định dạng số dưới dạng chữ số La mã trong Oracle

  4. Oracle UTL_SMTP:Ví dụ về Gửi Thư với Phần đính kèm Sử dụng Xác thực Ví Oracle

  5. Cách trả về các tham số đầu ra oracle từ một thủ tục được lưu trữ trong .NET