Tengo una funcion en oracle 11g que trae concatenado varios telefonos. La prueba de mi consulata va así:
Código SQL:
Ver original
SELECT vxe.telefono1||'@'||vxe.telefono2 FROM vehiculo vn, vehiculosxvitrina vxv, vitrinasxempresa vxe WHERE vn.id=vxv.idvehiculo AND vxv.idvitrina= vxe.id AND vn.id= *id de mi vehiculo* AND rownum = 1;
y obtengo: 2787777@3138008024 que son los tels que necesito.
Ahora en el psql tengo:
Código SQL:
Ver original
CREATE OR REPLACE FUNCTION traertelvendedorusado_2 (idVehiculo INTEGER) RETURN VARCHAR2 IS resultado VARCHAR2(9999); telefono VARCHAR2(99); telefono1 VARCHAR2(99); tam INTEGER; tam1 INTEGER; tam2 INTEGER; bandera INTEGER :=0; existe INTEGER:=0; BEGIN resultado := 0; dbms_output.put_line('inicio'); --verifico que se concesionario SELECT COUNT(*) INTO existe FROM visitor vi INNER JOIN vehiculo v ON v.id_usuario = vi.visitorid WHERE v.id = idVehiculo AND vi.company IS NOT NULL; dbms_output.put_line('existe es '||existe||' resultado es '||resultado); --Si no es concesionario IF existe = 0 THEN SELECT vi.cell INTO resultado FROM vehiculo ve, visitor vi WHERE ve.id_usuario = vi.visitorid AND ve.id= idVehiculo; ELSE /*Esta es la consulta implementada en el sql*/ SELECT tel INTO resultado FROM ( SELECT vxe.telefono1||'@'||vxe.telefono1 AS tel FROM vehiculo vn INNER JOIN vehiculosxvitrina vxv ON vn.id=vxv.idvehiculo INNER JOIN vitrinasxempresa vxe ON vxv.idvitrina= vxe.id WHERE vn.id= idVehiculo AND rownum = 1 )sub; END IF; RETURN resultado; EXCEPTION WHEN others THEN RETURN ' '; END traertelvendedorusado_2;
al ejecutar me devuelve otros telefonos:
Código SQL:
--el mismo que ejecute en consolaVer original
SELECT traertelvendedorusado_2(*id de mi vehiculo*) FROM dual;
y me sale: 4473800@4473800
que es un telefono que nada que ver.
Alguna sugerencia.
GRacias