martes, 3 de junio de 2008

Insertar imagen con posgres

ESTOY TRABAJANDO CON IMAGENES CON POWER BUILDER Y POSTGRESQL... ESTOY QUE BUSCO Y HASTA AHORA LO UNICO QUE E ENCONTRADO, ES QUE EL TIPO DE DATO QUE ALMACENA IMAGENES EN POSTGRES ES EL "OID" Y HASTA AHORA E LOGRADO ESTO Y ME FUNCIONA EN EL POSTGRES CREATE TABLE prodimages (id serial, prodid int8, image OID); INSERT INTO prodimages(id, prodid, image) VALUES (1, '345632', lo_import'/home/mydir/imagen.jpg')); AHORA LO QUE QUIERO ES QUE DESDE EL POWER BUILDER ME VISUALICE ESTO EN UN OBJETO OLE_1 COMO ESTO PERO NO ME FUNCIONA: 1----------//PARA GRABAR IMAGEN BLOB lo_imagen lo_imagen= ole_1.ObjectData UPDATEBLOB prodimages SET image = :lo_imagen WHERE id = 1 USING SQLCA; IF SQLCA.SQLCODE = -1 THEN Messagebox('Error','Error al GRABAR imagen : '+SQLCA.SQLERRTEXT ) RETURN ELSE Messagebox('Exito','grabacion exitosa') END IF 2--------//PARA RECUPERAR IMAGEN BLOB lo_imagen SELECTBLOB image INTO :lo_imagen FROM prodimages WHERE id = 1 USING SQLCA; IF SQLCA.SQLCODE = -1 THEN Messagebox('Error','Error al SELECCIONAR imagen : '+SQLCA.SQLERRTEXT ) RETURN END IF // Asignamos la imagen IF len(lo_imagen) > 0 THEN Ole_1.ObjectData = lo_imagen END IF DONDE ole_1 es una aplicacion de imagenes

possgres


Una regla (RULE) para actualizar una tabla basada en la vista no hereda "automáticamente" las cláusulas DEFAULT de las columnas en la tabla. La regla de reescritura es muy explícita: hace lo que dice y nada más. El momento para manejar los valores por omisión (DEFAULT) es antes de la regla.
Dicho esto, las restricciones en la tabla son respetadas en la tabla base. Las columnas SERIAL también funcionan correctamente con reglas de UPDATE siempre y cuando el valor no se defina explícitamente.
Berend Tober tiene un caso de prueba particularmente útil para mostrar el comportamiento de reglas de UPDATE con cláusulas DEFAULT. Este caso de prueba muestra la creación de la tabla con valores DEFAULT para las columnas tres y cuatro, además de un SERIAL en la columna 2. CREATE TABLE test_table (
field1 char(1) NOT NULL,
field2 SERIAL,
field3 INTEGER DEFAULT 1,
field4 VARCHAR(24) DEFAULT '(default value)',
CONSTRAINT testdb_pkey PRIMARY KEY (field2));

CREATE VIEW test_table_v AS
SELECT field1, field3, field4 FROM test_table;

CREATE RULE test_table_rd AS ON DELETE TO test_table_v DO INSTEAD
DELETE FROM test_table WHERE field1 = old.field1;

CREATE RULE test_table_ri AS ON INSERT TO test_table_v DO INSTEAD
INSERT INTO test_table (field1, field3, field4)
VALUES (new.field1, new.field3, new.field4);

CREATE RULE test_table_ru AS ON UPDATE TO test_table_v DO INSTEAD
UPDATE test_table SET
field1 = new.field1, field3 = new.field3, field4 = new.field4
WHERE field1 = old.field1;

INSERT INTO test_table VALUES ('A');
INSERT INTO test_table_v VALUES ('B');

-- Resultado --
=# SELECT * FROM test_table;
field1 field2 field3 field4
--------+--------+--------+-----------------
A 1 1 (default value)
B 2
(2 rows)

-- Por diversión, mostremos cómo funcionan las restricciones NOT NULL
=# insert into test_table_v values (NULL);
ERROR: ExecInsert: Fail to add null value in not null attribute field1
La solución para tener vistas actualizables con valores DEFAULT apropiados es ALTER TABLE ... SET DEFAULT. La mayoría de los comandos ALTER TABLE no funcionarán en vistas, pero ALTER TABLE ... SET DEFAULT sí lo hará. También es posible que desee que la vista tenga valores por omisión distintos que los de la tabla, lo cual puede lograrse con ALTER TABLE. ALTER TABLE test_table_v
ALTER field3 SET DEFAULT 1;
ALTER TABLE test_table_v
ALTER field4 SET DEFAULT '(default value)';

=# insert into test_table_v VALUES ('C');
INSERT 3702953 1
# select * from test_table;
field1 field2 field3 field4
--------+--------+--------+-----------------
A 1 1 (default value)
B 2
C 3 1 (default value)
(3 rows)
Esto muestra los valores por omisión para la vista activados a través del uso del comando ALTER TABLE.

martes, 21 de noviembre de 2006

blog de claudio

Google, Yahoo y Microsoft se unen para mejorar buscador

Las compañías Google, Yahoo y Microsoft dejarán de ser rivales en las búsquedas en internet para formar una inusual alianza con el fin de impulsar un estándar común respecto a cómo localizar sitios web.Yahoo y Microsoft anunciaron que apoyarán el protocolo de Google "Sitemaps 0.90" en lugar de usar diferentes estándares para lo que presentan los creadores de páginas web al subir un sitio a la red.
Esta alianza busca que sea más fácil para los creadores de páginas web el informar a los motores de búsqueda sobre el contenido de los sitios.
Un Sitemap es un archivo de sitio web que funciona como un marcador para motores de búsqueda para "arrastrar" ciertas páginas. Permite a los creadores de páginas hacer una lista de sus direcciones en línea, llamadas "URL", junto con datos tales como la última actualización de la página.