martes, 11 de abril de 2023

Oracle out parameter se trunca a la mitad

Oracle out parameter se trunca a la mitad de caracteres

Hola.

Estoy teniendo un problema en la llamada a un stored procedure de Oracle 19c

El problema consiste en que tengo definido un parámetro de salida de tipo VARCHAR2 en el stored procedure que al ser ejecutado devuelve el campo pero lo corta a la mitad de caracteres.

Ejemplo:

"hola_mundo" -> "hola_" 

Esto está ocasionando problemas de funcionamiento porque el valor completo es requerido para la autenticación de la aplicación. 

La versión de base de datos que estoy usando es Oracle 19c en Windows Server y la aplicación web es ASP.NET 4.8 con C# 

Es importante mencionar que tanto la versión de .NET como la versión de base de datos están siendo actualizadas. Anteriormente la versión .NET era 4.0 y la versión de Oracle era 11g.

Solución.


La solución de este problema es cambiar el tipo del parámetro de salida de VARCHAR2 a CHAR.

PROCEDURE SP_LGN_WS(p_status OUT NUMBER, p_roles OUT VARCHAR2)

Cambiar por:

PROCEDURE SP_LGN_WS(p_status OUT NUMBER, p_roles OUT CHAR)

Con este cambio el parámetro de salida devuelve el campo completo.

*Otro de los problemas que existen es que la aplicación usa la siguiente librería obsoleta: System.Data.Oracle.Client
La cual ya no es recomendada para trabajar con Oracle. 


Espero les sirva.