I was used examples from documentation, but doesn't success.
Oracle 11g, dotConnect for Oracle latest version (9.6.696)
Code: Select all
CREATE TABLE ASM_CLOB (
ID NUMBER(12),
NAME VARCHAR2(20),
DATA CLOB
)
CREATE OR REPLACE PROCEDURE ASM_ADD_CLOB(P_ID NUMBER, P_NAME VARCHAR2, P_DATA OUT CLOB)
IS
BEGIN
INSERT INTO ASM_CLOB VALUES(P_ID, P_NAME, EMPTY_CLOB())
RETURNING
DATA
INTO
P_DATA;
END;
Code: Select all
string connectionString = ...;
using (OracleConnection connection = new OracleConnection(connectionString))
{
connection.Open();
OracleCommand oraCommand = new OracleCommand("asm_add_clob", connection);
oraCommand.CommandType = CommandType.StoredProcedure;
OracleParameter op1 = new OracleParameter("p_id", OracleDbType.Number, ParameterDirection.Input);
op1.Value = 123;
OracleParameter op2 = new OracleParameter("p_name", OracleDbType.VarChar, ParameterDirection.Input);
op2.Value = "123";
OracleParameter op3 = new OracleParameter("p_data", OracleDbType.Clob, ParameterDirection.Input);
// Input according https://www.devart.com/dotconnect/oracle/articles/lob.html
op3.Value = "test";
oraCommand.Parameters.Add(op1);
oraCommand.Parameters.Add(op2);
oraCommand.Parameters.Add(op3);
oraCommand.ExecuteNonQuery();
}
in Direct=true connection mode ASM_CLOB.DATA is empty after success stored procedure execution
in Direct=false connection mode Devart.Data.Oracle.OracleException: 'ORA-22275: invalid LOB locator specified'
Any ideas?