Re: returned more than one row

From: antonio albiñana crespo <an_chonio(at)hotmail(dot)com>
To: jcrmlima(at)gmail(dot)com, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: returned more than one row
Date: 2006-05-01 16:02:06
Message-ID: BAY103-F1585D1DC2B508F87E1710793B10@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Buenas, gracias ante todo, pero yo quiero saber el único valor que puede
devolver, porque solo puede haber una provincia posible, no puede devolver
varias. Lo del IF EXISTS (SUBQUERY)... es para saber si devuelve un único
valor o no? a mi me hace falta que me devuelva ese valor que se que es unico

>From: "Julio Rivero" <jcrmlima(at)gmail(dot)com>
>To: "juan jose dominguez" <preguntas_sql(at)hotmail(dot)com>
>CC: pgsql-es-ayuda(at)postgresql(dot)org
>Subject: Re: [pgsql-es-ayuda] returned more than one row
>Date: Mon, 1 May 2006 10:32:56 -0500
>
>On 5/1/06, juan jose dominguez <preguntas_sql(at)hotmail(dot)com> wrote:
>>
>>Buenas tengo las siguientes tablas:
>>
>>
>>--DROP TABLE codigos_provincia;
>>
>>CREATE TABLE codigos_provincia
>>(
>>codigo numeric NOT NULL,
>>provincia char(25)
>>) ;
>>
>>INSERT INTO codigos_provincia VALUES (01,'Álava');
>>INSERT INTO codigos_provincia VALUES (02,'Albacete');
>>INSERT INTO codigos_provincia VALUES (03,'Alicante');
>>...
>>
>>
>>Y:
>>
>>
>>DROP TRIGGER trigger_comprueba_cp ON mitabla;
>>DROP FUNCTION comprueba_cp () ;
>>
>>CREATE FUNCTION comprueba_cp () RETURNS OPAQUE AS'
>>DECLARE
>>n_aux NUMERIC;
>>BEGIN
>>IF (NEW.micodigo) ISNULL THEN RAISE EXCEPTION ''El código no puede ser
>>nulo'';
>>END IF;
>>
>>IF (NEW.miprovincia) ISNULL THEN RAISE EXCEPTION ''La provincia no puede
>>ser
>>nula'';
>>END IF;
>
>
>n_aux := 0;
>
>n_aux := n_aux / 1000;
>>
>>SELECT codigos_provincia.codigo INTO n_aux FROM codigos_provincia WHERE
>>NEW.miprovincia = codigos_provincia.provincia;
>
>
>Puedes adicionarle un group by
>
>---
>
>SELECT codigos_provincia.codigo INTO n_aux FROM codigos_provincia WHERE
>NEW.miprovincia = codigos_provincia.provincia
>GROUP BY codigos_provincia.codigo;
>
>---
>
>IF (n_aux = codigos_provincia.codigo) THEN RAISE NOTICE ''Codigo postal %
>>corresponde a la provincia %'', NEW.micodigo, NEW.miprovincia;
>>ELSE RAISE EXCEPTION ''Codigo postal % NO corresponde a la provincia %'',
>>NEW.micodigo, NEW.miprovincia;
>>END IF;
>>
>>RETURN NEW;
>>END;
>>'LANGUAGE 'plpgsql';
>>
>>CREATE TRIGGER trigger_comprueba_cp BEFORE INSERT OR UPDATE ON mitabla
>>FOR EACH ROW EXECUTE PROCEDURE comprueba_cp ();
>>
>>
>>Y me da el siguiente error al insertar:
>>INSERT INTO mitabla VALUES (28080, 'Madrid', 'Juan');
>>
>>
>>
>>ERROR: query "SELECT ( $1 = codigos_provincia.codigo)" returned more
>>than
>>one row
>>CONTEXT: PL/pgSQL function "comprueba_cp" line 13 at if
>
>
>La consulta esta devolviendo mas de 2 valores (es lo que te esta diciendo).
>
>Puedes hacer un
>
>IF EXISTS (SUBQUERY)
>...
>ELSE
>...
>END IF;
>
>Si existe datos en tu subquery el valor del EXISTS te va a devolver TRUE,
>de
>lo contrario haces lo otro.
>
>
>
>Tiene que comprobar que el codigo que inserto se corresponde con la
>>provincia, pero solo hay un codigo para cada provincia, el select solo
>>devuelve una celda... que puedo hacer?
>>
>>GRACIAS!
>>
>>_________________________________________________________________
>>Moda para esta temporada. Ponte al día de todas las tendencias.
>>http://www.msn.es/Mujer/moda/default.asp
>>
>>
>>---------------------------(fin del mensaje)---------------------------
>>TIP 9: el optimizador ignorará el uso de recorridos de índice si los
>> tipos de datos de las columnas no coinciden
>>
>
>
>
>--
>Saludos
>Att,
>Julio Rivero
>Movil: 98817321

_________________________________________________________________
Acepta el reto MSN Premium: Protección para tus hijos en internet.
Descárgalo y pruébalo 2 meses gratis.
http://join.msn.com?XAPID=1697&DI=1055&HL=Footer_mailsenviados_proteccioninfantil

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2006-05-01 16:07:43 Re: returned more than one row
Previous Message Martin Marques 2006-05-01 15:59:37 Re: returned more than one row