I am using Dapper and have specified the ParameterDirection and Size. But the string that comes back is not the whole string.
[INF] Return message: The person-ID 23 has been inse
var queryParameters = new DynamicParameters();
queryParameters.Add("id", item.Id);
queryParameters.Add("first_name", item.FirstName);
queryParameters.Add("last_name", item.LastName);
//queryParameters.Add("out_message", direction: ParameterDirection.Output, size: 250);
//queryParameters.Add("out_message", direction: ParameterDirection.Output, size: DbString.DefaultLength);
queryParameters.Add("out_message", dbType:DbType.String, direction: ParameterDirection.Output, size: 500);
var results = connection.Query("kwc_test_person_procedure2",
queryParameters,
commandType: CommandType.StoredProcedure);
var returnMessage = queryParameters.Get<string>("out_message");
Log.Information("Return message: {0}", returnMessage);
The Oracle Stored Procedure is as follow, and I am getting the full string of out_message when I test it directly in the database:
create or replace procedure kwc_test_person_procedure2(
id in number,
first_name in varchar2,
last_name in varchar2,
out_message out varchar2
) is
begin
insert into kwc_test_person(id, first_name, last_name) values (id, upper(first_name), upper(last_name));
out_message := 'The person-ID ' || id || ' has been inserted to database on ' || sysdate;
dbms_output.put_line( 'The person-ID ' || id || ' has been inserted to database on ' || sysdate);
End kwc_test_person_procedure2;
The person-ID 84 has been inserted to database on 24-JUN-21
As you can see in the commented out lines, I have tried different things.
When I tried:
queryParameters.Add("out_message", dbType: DbType.String, direction: ParameterDirection.Output, size: int.MaxValue);
I even got exception:
[ERR] Parameter 'out_message': No size set for variable length data type: String.