VALEU TIAGO.... Era isso mesmo que eu precisava....

Obrigado pela ajuda....


----- Original Message ----- 
From: "Thiago Risso" <[EMAIL PROTECTED]>
To: "Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.org.br>
Sent: Thursday, December 06, 2007 1:56 PM
Subject: Re: [pgbr-geral] Variaveis no Postgres


Alexandre ,

Fiquei encafifado .... Bolei algo que resolve... mas as variaveis são
de sessão .. então, toda vez que conectar tem q setar as variáveis...
e quando desconectar ... limpa elas.. se não vão ficar ocupando espaço
do banco.... Ou faz um scriptzinho que limpa as variaveis antigas !!


Testei em 3 sessões ao mesmo tempo .. sem erros ...

La vai :

----  START CODE
CREATE SEQUENCE session_id;

CREATE TABLE session_var
(
sessid bigint,
var varchar,
val text,
tmsp    time default current_timestamp
);


CREATE OR REPLACE FUNCTION set_var(varchar,text) RETURNS text AS $$
INSERT INTO session_var VALUES(get_sessid(),$1,$2);
select $2;
$$
LANGUAGE 'sql';

CREATE OR REPLACE FUNCTION get_var(varchar) RETURNS TEXT AS $$
SELECT val FROM session_var WHERE sessid = get_sessid() AND var = $1;
$$
LANGUAGE 'sql';



CREATE OR REPLACE FUNCTION get_sessid() RETURNS bigint AS $$
DECLARE
ss BIGINT;
BEGIN
SELECT currval('session_id') INTO ss;
RETURN ss;

EXCEPTION WHEN object_not_in_prerequisite_state THEN
SELECT nextval('session_id') INTO ss;
RETURN ss;
END
$$
LANGUAGE 'plpgsql';
-- END CODE

Testes :

nesic2=# select get_var('test');
 get_var
---------

(1 row)

nesic2=# select set_var('id_user',10);
 set_var
---------
 10
(1 row)

nesic2=# select get_var('id_user');
 get_var
---------
 10
(1 row)


-- 
Att:
Thiago Risso
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a