Re: Problem with return type of function ???
От | Denis BUCHER |
---|---|
Тема | Re: Problem with return type of function ??? |
Дата | |
Msg-id | 4AE06D5D.4020908@hsolutions.ch обсуждение исходный текст |
Ответ на | Re: Problem with return type of function ??? (Richard Huxton <dev@archonet.com>) |
Ответы |
Re: Problem with return type of function ???
|
Список | pgsql-sql |
Richard Huxton a écrit : >>> The other thing you could try is printing out row before returning it: >>> RAISE NOTICE 'row = %', row; >>> RETURN NEXT ROW; >>> It might be you've not got what you were expecting. >> Thanks a lot, good idea... >> >> But it looks good : > > Hmm... > >>> SELECT * FROM rma.test ('19G256259'); >>> NOTICE: row = (12066602,19G256259,170224,PN6405B,2009-09-22,"FORERUNNER 405 NOIR",2009-09-22,15090,14748) >>> ERREUR: wrong record type supplied in RETURN NEXT >>> CONTEXTE : PL/pgSQL function "test" line 12 at return next >>> >>> \d rma.serial_number >>> Table « rma.serial_number » >>> Colonne | Type | Modificateurs >>> -------------+-----------------------+------------------------------------------------------------------- >>> sn_id | bigint | not null default nextval('rma.serial_number_sn_id_seq'::regclass) >>> sn | character varying(30) | >>> no_client | integer | >>> no_art_bw | character varying(11) | >>> sn_fc_date | date | >>> desc_fr | character varying(40) | >>> sn_cm_date | date | >>> no_facture | integer | >>> no_commande | integer | > > I was wondering if maybe there was a bug to do with domains or complex > column types, but there's nothing out of the ordinary here. Yes... > OK - can you generate a test script with just CREATE TABLE, CREATE > FUNCTION, one INSERT and a function-call? I'll try and recreate it here. > Oh, and what version of PostgreSQL are we talking about? > Bienvenue dans psql 8.1.17, l'interface interactive de PostgreSQL. OK I prepared what you asked and I tested it myself before sending. And I think I've found the problem (but not the solution !) : When I dump the FUNCTION, I get this : > CREATE test(character varying) RETURNS SETOF serial_number instead of this : > CREATE test(character varying) RETURNS SETOF rma.serial_number That seems to be some bug in Postgres ? The problem is then clear, it doesn't take SETOF rma.serial_number but SETOF public.serial_number Do you see how we could solve this ? And do you think this is the problem ? Thanks a lot again for all your help ! Denis
В списке pgsql-sql по дате отправления: