SELECT funciona ahora y nunca mas

From: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: SELECT funciona ahora y nunca mas
Date: 2007-03-19 20:31:07
Message-ID: 200703192131.07518.v.lopez.s@ono.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenas.

Puede (seguro) que hay una manera mas facíl de hacerlo, y si me lo decís os
lo agradeceré.

El caso es que tengo la siguiente secuencia ...

test=# CREATE DOMAIN domUsuario AS VARCHAR(16) NOT NULL CONSTRAINT usuarioChk
CHECK(VALUE ~ '^[a-zA-Z0-9]{8,}$');
CREATE DOMAIN
test=# CREATE OR REPLACE FUNCTION EsUsuario(VARCHAR(16)) RETURNS boolean AS
test-# $$
test$# BEGIN
test$# CREATE TEMP TABLE tblUsuario (usuario domUsuario) ON COMMIT DROP;
test$# INSERT INTO tblUsuario VALUES ($1);
test$# RETURN TRUE;
test$# EXCEPTION
test$# WHEN check_violation THEN
test$# RETURN FALSE;
test$# END;
test$# $$
test-# LANGUAGE plpgsql;
CREATE FUNCTION
test=# SELECT EsUsuario('usu');
esusuario
-----------
f
(1 fila)

Y hasta aquí me funciona (o eso creo) ... crea un dominio que me vale para
crear una tabla ¿temporal? -> ¿dentro de esa función?

Mediante "SELECT EsUsuario('usu')" hago funcionar esa función y me da un
resultado creo que correcto.

El problema viene justo despues ...

test=# SELECT EsUsuario('usu');
ERROR: no existe la relación con OID 16789
CONTEXT: sentencia SQL: «INSERT INTO tblUsuario VALUES ( $1 )»
PL/pgSQL function "esusuario" line 3 at SQL statement

repito la sentencia que me ha funcionado unas lineas antes y me falla ... :-(

Alguien sabe porque?

--
----o---( )---o----
Saludos de Victor Lopez Sabio
v(dot)lopez(dot)s(at)ono(dot)com
--------oooo--------

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Sonia Malave 2007-03-19 20:48:57 Re: Transacciones!
Previous Message Rubén Luna 2007-03-19 20:27:59 Campo tipo lo