PostgreSQL - Problemas Concadenar

   
Vista:

Problemas Concadenar

Publicado por Hugo Barbagallo (3 intervenciones) el 06/03/2009 21:43:39
Este es la funcion que estoy creando, y quiero concadenar para tener el siguientes resultado : V-12345678-1 y no se como hacerlo, intente así, me sale V-12345678- pero el ultimo numero si lo pongo me da error

update personal set numero_rif = nacionalidad || '-' || lpad(cedula,8,'0') || '-' || valor[var_valor2];

pero el valor de la funcion me da error, Como haria esta actualizacion concadenando el valor obtenido en la funcion?. (abajo tengo el problema que obtiene el ultimo numero que lo quisiera concadenar)

_______________________________________________________________________

CREATE OR REPLACE FUNCTION gl_cambio_rif ("varchar")
RETURNS int4 AS '
DECLARE


rif alias for $1;
cosa_arreglo int4[2][2];
var_valor2 integer;
valor integer ARRAY[9];
total integer ARRAY[9];

I integer[3]:= 0;
J integer[3]:= 0;
T_TOTAL integer[3]:= 0;
VERIFICADOR integer[3]:= 0;
DIGITO integer[3]:= 0;
SUMA integer[4]:= 0;
RESTO integer[4]:= 0;
DIVIDENDO integer[4]:= 0;
T_VALOR integer[4]:= 0;

BEGIN

valor[1] := 3;
total[1] := 0;
valor[2] := 2;
total[2] := 0;
valor[3] := 7;
total[3] := 0;
valor[4] := 6;
total[4] := 0;
valor[5] := 5;
total[5] := 0;
valor[6] := 4;
total[6] := 0;
valor[7] := 3;
total[7] := 0;
valor[8] := 2;
total[8] := 0;
valor[9] := 4;
total[9] := 0;


IF substr(rif,1,1) = "J" THEN
var_valor2 := 3;
ELSEIF substr(rif,1,1) = "P" THEN
var_valor2 := 4;
ELSEIF substr(rif,1,1) = "G" THEN
var_valor2 := 5;
ELSEIF substr(rif,1,1) = "V" THEN
var_valor2 := 1;
ELSEIF substr(rif,1,1) = "E" THEN
var_valor2 := 2;
END IF;

VERIFICADOR := TO_NUMBER(SUBSTR(x_Rif, LENGTH(x_Rif),1));

FOR I IN 1..19
LOOP
IF I > 11 THEN
J := J+1;
total[J] := TO_NUMBER(SUBSTR(X_Rif,I,1)) * valor[J];
END IF;
END LOOP;

Total[9] := Valor[9] * Valor;

FOR I IN 1..9
LOOP
Total := Total + Total[I];
END LOOP;

Dividendo := FLOOR(Total/11);

Resto := Total - (Dividendo * 11);

IF Resto > 1 THEN
Digito := 11 - Resto;
ELSE
Digito := 0;
END IF;

RETURNS valor[var_valor2];

END;'
LANGUAGE 'plpgsql' VOLATILE;
GRANT EXECUTE ON FUNCTION gl_cambio_rif ("varchar") TO postgres WITH GRANT OPTION;
GRANT EXECUTE ON FUNCTION gl_cambio_rif ("varchar") TO public;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas Concadenar

Publicado por Gabriel Sánchez (22 intervenciones) el 09/04/2009 20:15:02
Hola, veo que tu función retorna un valor entero, y pues para unirlo a una cadena de caracteres tendras que convertirlo a cadena también....

Ejm...

cadena1||'-'||cadena2||'-'||cast(result_fucion as varchar(x))


Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar