Hola estoy haciendo un trabajo de U,
Tengo una funcion en oracle 11g que trae concatenado varios telefonos. La prueba de mi consulata va así:
Código SQL:
Ver originalSELECT 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 originalCREATE 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:
Ver originalSELECT traertelvendedorusado_2(*id de mi vehiculo*) FROM dual;
--el mismo que ejecute en consola
y me sale: 4473800@4473800
que es un telefono que nada que ver.
Alguna sugerencia.
GRacias