Formato de un char

Hola tengo un problema con una función que recibe un char necesito darle formato a esa variable y que me retorne un valor de 3 dígitos pero la variable V_COD_RESULT debe ser necesariamente de tipo char (3)
CREATE OR REPLACE function codformato(V_CODIGO in char)return CHAR
is
V_COD_RESULT CHAR(3);
begin
--- retorna el codigo en un formato de 3 digitos
V_COD_RESULT:= TO_CHAR(to_number(V_CODIGO),'000');
return V_COD_RESULT;
/
ejecutando la funcion
SQL> select codformato(1) from dual;
select codformato(1) from dual
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "DESSOL.CODFORMATO", line 7
ORA-06512: at line 1

2 respuestas

Respuesta
1
La función dedbe ser la siguiente
CREATE OR REPLACE function codformato(V_CODIGO in char)return CHAR
is
V_COD_RESULT CHAR(3);
Begin
--- Retorna el código en un formato de 3 dígitos
V_COD_RESULT:= LPAD(V_CODIGO,3,'0');
return V_COD_RESULT;
END;
/
Pruébalas y veras.. me cuentas de todas formas..
Suerte
Respuesta
1
Deberás de cambiar la linea que pones
V_COD_RESULT:= TO_CHAR(to_number(V_CODIGO),'000');
por:
v_cod_resul := lpad(substr(v_codigo,1,3),3,'0');
Adamas al llamar a la funcion deberas de hacerlo de la siguiente forma:
select codformato('1') from dual;
Ya que el parametro de entrada que has definido es un char;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas