problema con función y dominio en postgres 8.2

From: "Lisibeth Troconis" <lisibeth(dot)troconis(at)gmail(dot)com>
To: alvherre(at)commandprompt(dot)com, pgsql-es-ayuda(at)postgresql(dot)org
Subject: problema con función y dominio en postgres 8.2
Date: 2007-10-14 15:21:19
Message-ID: a7372eb00710140821j5eb5e085pb02267081485e6d1@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Disculpen envío de nuevo porque no coloque el asunto

---------- Forwarded message ----------
From: Lisibeth Troconis <lisibeth(dot)troconis(at)gmail(dot)com>
Date: 14-oct-2007 11:18
Subject: Re: [pgsql-es-ayuda] [inoue(at)tpf(dot)co(dot)jp: [ANNOUNCE] psqlODBC
08.02.0500 Released]
To:Alvaro Herrera <alvherre(at)commandprompt(dot)com>, pgsql-es-ayuda(at)pos
tgresql.org

Saludos,

Tenía la versión 8.1 solo que no se cual 8.1.xxxx de postgres instalada (S.O.
Windows XP) por problemas con la máquina tuve que formatear logrando solo
guardar el directorio de Postgres en otra partición de mi disco, en otra
oportunidad plantee este mismo problema pero sobre linux Ubunto y se
soluciono con instalar de nuevo la versión del postgres que tenia, copiando
el archivo data y ejecutando el comando initdb -D directorio -U postgbres
y listo super todo bien, pero se me presenta el problema ahora pero en
Windows intente emular lo mismo en windows y no puedo el pgadmin me arroja
el error algo como "Esta seguro que el servicio esta levantado y escuchando
por el puerto 5432" revise el servicio y todo bien porque levantaba sin
problema, revise los log para ver si salia algo y aun asi se levantaba el
servicio y no salia nada, revise mis archivos de configuración y todo bien,
me la pase rato haciendo todo lo que se me ocurrió en Windows (pensando
como funciona en linux) cuando trataba de usar el initdb con mi usuario (por
consola) no me permitía hacerlo pues claro soy usuario administrador del
sistema, me inicie con otro usuario sin privilegios pero nada igual no me
camino, hasta reeplace todo e directorio de Postgres :(, termine dándome por
vencida y tenia algo de las base de datos guardada en sql por allí en mi
máquina. Así que dije nada, voy a instalar de 0 y como voy a instalar de
cero instale Postgres 8.2 ahora se me presenta el problema:

siguiente, tengo:

create domain codigos as int4 not null
check(value >0);
comment on domain codigos is 'Dominio para los campos codigos';

create sequence id_codigo increment 1 minvalue 1 maxvalue 90000000 start
1 cache 1;

CREATE TABLE mi_tabla
(
codigo codigos DEFAULT nextval('id_codigo'::regclass),
campo1 tipo1,
campo2 tipo2,
...
campon tipon,
CONSTRAINT codigo PRIMARY KEY (codigo)
)

*Nota: tipo1 tipo2 ... tipon puede que sean tipos definidos por mi o los
que trae postgre eso no importa mucho

CREATE OR REPLACE FUNCTION get_tabla(codigos, tipo1)
RETURNS SETOF mi_tabla AS
$BODY$
declare
tabla mi_tabla%ROWTYPE;
tabla_codigo alias for $1;
tabla_campo1 alias for $2;
begin
for tabla in
select * from mi_tabla
where codigo = tabla_codigo and campo1 = tabla_campo1
loop
return next tabla;
end loop;
return;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;

y se usa

select * from get_tabla(3,'micampovalor');

pero me arroja el siguiente error

ERROR: domain codigos does not allow null values
SQL state: 23502
Context: PL/pgSQL function "get_tabla" line 5 at block variables
initialization

Antes de que me digan que debería usar una vista, lo se pero particularmente
lo necesito así, y en la versión de postgres lo usaba asì y todo bien,
ahora es que no camina, y realmente no entiendo pero me da la impresión de
que como el campo codigo que esta definido como un tipo mio que además no
permite null solo el colocarlo allì me da el error, me paso con otra función
también, pero lo solucione difiniendo el campo a retornar en la función como
del tipo base al dominio de ese campo, pero para ese caso funcionó para este
no y no me parece que tenga que cambiar toda la base de datos a los campos
base de postgre porque no pueda usar los que yo defina previamente con
funciones parecidas a la anterior,

Bueno a todas estas, le pido por favor que si saben como solucionar lo de mi
base de datos respaldada seria bueno pues no tendría que hacer otra vez las
cosas que no tengo en mis scrips que son un poco viejos, pero si no o
mejor dicho si saben que es lo que pasa en lo ultimo que plantee con la
función pues también se los agradecerla mucho allí no comprendo porque el
8.2 me funciona distinto del 8.1

--
Lisibeth Troconis

--
Lisibeth Troconis

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message usuario anonimo 2007-10-14 21:45:55 Re: Carga de Datos en Postgresql
Previous Message Lisibeth Troconis 2007-10-14 15:18:09 Re: [inoue@tpf.co.jp: [ANNOUNCE] psqlODBC 08.02.0500 Released]