Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/07/2013, 13:57
Avatar de eaanillol
eaanillol
 
Fecha de Ingreso: septiembre-2010
Ubicación: Bogota - Colombia
Mensajes: 25
Antigüedad: 13 años, 8 meses
Puntos: 0
NO guarda valor correcto en variable oracle psql

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 original
  1. SELECT vxe.telefono1||'@'||vxe.telefono2  
  2.      FROM vehiculo vn, vehiculosxvitrina vxv, vitrinasxempresa vxe
  3.     WHERE vn.id=vxv.idvehiculo  AND vxv.idvitrina= vxe.id
  4.       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
  1. CREATE OR REPLACE
  2. FUNCTION traertelvendedorusado_2 (idVehiculo INTEGER) RETURN VARCHAR2 IS
  3.     resultado VARCHAR2(9999);
  4.   telefono VARCHAR2(99);
  5.   telefono1 VARCHAR2(99);
  6.   tam INTEGER;
  7.   tam1 INTEGER;
  8.   tam2 INTEGER;
  9.   bandera INTEGER :=0;
  10.   existe INTEGER:=0;
  11. BEGIN
  12. resultado := 0;
  13. dbms_output.put_line('inicio');
  14. --verifico que se concesionario
  15. SELECT COUNT(*) INTO existe FROM visitor vi
  16. INNER JOIN vehiculo v ON v.id_usuario = vi.visitorid
  17. WHERE v.id = idVehiculo AND vi.company IS NOT NULL;
  18. dbms_output.put_line('existe es '||existe||' resultado es '||resultado);
  19.  
  20. --Si no es concesionario
  21. IF existe = 0 THEN
  22.     SELECT vi.cell   INTO resultado
  23.     FROM vehiculo ve, visitor vi
  24.     WHERE ve.id_usuario = vi.visitorid AND ve.id= idVehiculo;
  25. ELSE
  26.    /*Esta es la consulta implementada en el sql*/
  27.    SELECT  tel INTO resultado FROM (
  28.     SELECT vxe.telefono1||'@'||vxe.telefono1 AS tel  
  29.      FROM vehiculo vn
  30.      INNER JOIN vehiculosxvitrina vxv ON vn.id=vxv.idvehiculo
  31.      INNER JOIN vitrinasxempresa vxe ON vxv.idvitrina= vxe.id
  32.     WHERE vn.id= idVehiculo AND rownum = 1
  33.       )sub;
  34. END IF;
  35.  
  36. RETURN resultado;
  37. EXCEPTION
  38. WHEN others THEN
  39. RETURN ' ';
  40. END traertelvendedorusado_2;

al ejecutar me devuelve otros telefonos:
Código SQL:
Ver original
  1. SELECT 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