Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wykonaj funkcję pl/sql za pomocą OracleCommand

Poniższy kod działa dla mnie.
NB:Twój kod pl/sql nazywał się funkcją KRIST.f_Login, ale Twój c# nazywał go krist.p_login
NB2:Twój kod pl/sql używał Varchar2, ale Twój c# używany varchar
NB3:Używam Oracle.DataAccess.dll
NB4:Zakładam, że rozmiar bufora wartości zwracanej może wynosić 1, ale wypróbuj różne rozmiary.

using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

int RETURN_VALUE_BUFFER_SIZE = 32767; 
OracleCommand cmd = new OracleCommand();
try {
    cmd.Connection = conn;
    cmd.CommandText = "KRIST.f_Login";
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add("returnVal", OracleDbType.Varchar2, RETURN_VALUE_BUFFER_SIZE);  
    cmd.Parameters["returnVal"].Direction = ParameterDirection.ReturnValue;

    cmd.Parameters.Add("userName", OracleDbType.Varchar2);
    cmd.Parameters["userName"].Value = "kristian";

    cmd.Parameters.Add("password", OracleDbType.Varchar2);
    cmd.Parameters["password"].Value = "kristian";

    cmd.ExecuteNonQuery();
    string bval = cmd.Parameters["returnVal"].Value.ToString();
    return bval;
} catch (Exception e) {
    // deal with exception 
} finally {
    command.Dispose();
    connection.Close();
    connection.Dispose();
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. odświeżenie zmienionego źródła łącza db (brama Oracle do serwera sql)

  2. Pobierz rekord w maksymalnym dniu każdego miesiąca

  3. Grupowanie/porządkowanie Oracle SQL

  4. PARTITION BY z i bez KEEP w Oracle

  5. HikariCP 1.4.0 MBean InstanceNotFoundException