[Pgsql-ayuda] OID de un registro. Virus en "pgsql-ayuda.mbox"
Armando Maldonado
amaldonado@dportales.cl
Fri, 13 Feb 2004 09:32:32 -0300
Cuando tengo dudas de donde estan cada guardadas las cosas dentro de la DB=
lo=20
que hago consulto el programa pg_dump.c ya que este programa lo que hace=20
genera consultas SQL para extraer la informaci=F3n triggers, indices , tus=
=20
oids, etc.
Mmmm con respento a t=FA pregunta no pude crear una funcion ya que el lengu=
aje=20
plpgsql tiene problemas con las variables con referencias
ejemplos
primer ejemplo que estaba haciendo
=2D------------------------------------------------------------------------=
=2D-----------------------------
CREATE FUNCTION "que_oid" (integer) RETURNS text AS '
DECLARE
Registro RECORD;
Registro2 RECORD;
el_oid ALIAS FOR $1;
dat text;
BEGIN
FOR Registro IN select c.Relname from pg_class c where Relkind=3D'r=
' and=20
Relname not like '%pg%' LOOP
select oid INTO Registro2 from Registro.Relname where=20
oid=3Del_oid;
IF FOUND THEN
RETURN Registro.Relname;
END IF;
END LOOP;
' LANGUAGE 'plpgsql';
=2D--------------------------------------------------------------
otro ejemplo
DROP FUNCTION que_oid2 (text);
CREATE FUNCTION que_oid2 (text) RETURNS text AS '
DECLARE
el_oid ALIAS FOR $1;
dato text;
Reg1 RECORD;
Reg2 RECORD;
comunas text;
BEGIN
FOR Reg2 IN SELECT * FROM pg_class WHERE Relkind=3D''r'' AND Relname n=
ot=20
like ''%pg%'' LOOP
comunas:=3DReg2.Relname;
FOR Reg1 IN SELECT oid,* FROM comunas LOOP
return Reg1.oid;
END LOOP;
--return ''select * from ''||tabla||'' where oid=3D''||el_oid;
--dato:=3D(''select oid from ''||tabla||'' where oid=3D''||el_oi=
d);
--select oid INTO Reg1 from tabla where oid=3Del_oid;
--IF dato IS NOT NULL THEN
--IF FOUND THEN
--return tabla;
--END IF;
END LOOP;
RETURN null;
END;
' LANGUAGE 'plpgsql';
a me aburr=ED
pero lo que puedes hacer es un promama en C o php
que haga lo siguiente
select c.Relname from pg_class c where Relkind=3D'r' and Relname not like=20
'%pg%';
luego recorrer en un FOR las tuplas con el nombre de las tablas
y crear el otro dentro del for =20
select from $tabla where oid=3D$oid
y si existe retornar el $tabla
El Jueves 12 Febrero 2004 07:14, Cuevas Luis escribi=F3:
> Hola amigos/as como ustedes saben al ocurrir una
> operaci=F3n de insertar automaticamente se le asigna un
> OID al nuevo registro insertado.
> Mis preguntas son:
>
> 1-Existe alguna tabla del sistema donde se pueda
> acceder a los OID de los registros. (OJO, no de las
> columnas)
> 2- Puedo saber en que tabla esta insertado un registro
> a partir de su OID. :-)
>
> Otro aparte. El fichero "pgsql-ayuda.mbox" colocado
> para descargar en el sitio de la lista y que contiene
> todos los mensajes de la lista tiene un virus. En
> realidad no es un virus es una vulnerabilidad
> "Exploit/iFrame", que como es l=F3gico afecta a
> Windows...
>
> Gracias
> Saludos
> Luis
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! Finance: Get your refund fast by filing online.
> http://taxes.yahoo.com/filing.html
> _______________________________________________
> Pgsql-ayuda mailing list
> Pgsql-ayuda@tlali.iztacala.unam.mx
> http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda