- Se incorporó
- 3 Enero 2006
- Mensajes
- 7.425
Hola colegas,
Estoy pasando rabias con este pequeño procedimiento:
El procedimiento consiste en sacar los datos de una vista y meterlos en otra tabla, pero al encontrar conflictos con la llave única de la tabla me puse a ver un poco más arriba de dónde viene el problema y revisando me encuentro que si ejecuto la query directo en la BD, me trae un resultado que es el esperado (un rut), y si lo ejecuto en un statement me trae cualquier otro resultado menos lo que estoy buscando:
La query:
El statement:
Si le saco la sentencia ROWNUM = 1, me reclama que trae muchos resultados, si se la dejo puesta, me trae un número ná que ver, asociado al rut de otro cliente.
Estoy pasando rabias con este pequeño procedimiento:
El procedimiento consiste en sacar los datos de una vista y meterlos en otra tabla, pero al encontrar conflictos con la llave única de la tabla me puse a ver un poco más arriba de dónde viene el problema y revisando me encuentro que si ejecuto la query directo en la BD, me trae un resultado que es el esperado (un rut), y si lo ejecuto en un statement me trae cualquier otro resultado menos lo que estoy buscando:
La query:
Código:
SELECT CLIENTE FROM "clientes_jde" WHERE RUT = '76950693-4' AND TIPOCLIENTE = 'C';
-- me trae el código de cliente que es el rut sin el guión (ej: 76950693)
El statement:
Código:
SET SERVEROUTPUT ON
DECLARE
rut NCHAR(20) := '76950693-4';
exist NUMBER;
an8 NUMBER;
BEGIN
SELECT COUNT(1) INTO exist FROM "clientes_sgv" WHERE "rut" = rut;
DBMS_OUTPUT.put_line ('El rut '|| TRIM(rut) || ' aparece ' || exist || ' veces');
SELECT CLIENTE INTO an8 FROM "clientes_jde" WHERE RUT = rut AND TIPOCLIENTE = 'C' AND ROWNUM =1;
DBMS_OUTPUT.put_line ('El an8 del rut '|| rut || ' es '|| an8);
END;
Si le saco la sentencia ROWNUM = 1, me reclama que trae muchos resultados, si se la dejo puesta, me trae un número ná que ver, asociado al rut de otro cliente.