¿Cómo se usan las variables en un script simple de PostgreSQL?

Por ejemplo, en MS-SQL, puede abrir una ventana de consulta y ejecutar lo siguiente:

DECLARE @List AS VARCHAR(8) SELECT @List = 'foobar' SELECT * FROM dbo.PubLists WHERE Name = @List 

¿Cómo se hace esto en PostgreSQL? Se puede hacer?

La respuesta completa se encuentra en la documentación oficial de PostgreSQL .

Puede usar la nueva característica de bloque de código anónimo PG9.0 ( http://www.postgresql.org/docs/9.1/static/sql-do.html )

 DO $$ DECLARE v_List TEXT; BEGIN v_List := 'foobar' ; SELECT * FROM dbo.PubLists WHERE Name = v_List; -- ... END $$; 

También puedes obtener la última identificación de inserción :

 DO $$ DECLARE lastid bigint; BEGIN INSERT INTO test (name) VALUES ('Test Name') RETURNING id INTO lastid; SELECT * FROM test WHERE id = lastid; END $$; 
 DO $$ DECLARE a integer := 10; b integer := 20; c integer; BEGIN c := a + b; RAISE NOTICE'Value of c: %', c; END $$; 

Puedes usar:

 \set list '''foobar''' SELECT * FROM dbo.PubLists WHERE name = :list; 

Que hará

Aquí hay un ejemplo del uso de una variable en plpgsql:

 create table test (id int); insert into test values (1); insert into test values (2); insert into test values (3); create function test_fn() returns int as $$ declare val int := 2; begin return (SELECT id FROM test WHERE id = val); end; $$ LANGUAGE plpgsql; SELECT * FROM test_fn(); test_fn --------- 2 

Eche un vistazo a los documentos plpgsql para obtener más información.

He encontrado algunos otros documentos que usan \set para declarar la variable de scripting pero el valor parece ser como el valor constante y estoy descubriendo que puede actuar como una variable variable no constante.

Ex:

 \set Comm 150 select sal, sal+:Comm from emp 

Aquí sal es el valor que está presente en la tabla ’emp’ y comm es el valor constante.

Tenía que hacer algo como esto

 CREATE OR REPLACE FUNCTION MYFUNC() RETURNS VOID AS $$ DO $do$ BEGIN DECLARE myvar int; ... END $do$ $$ LANGUAGE SQL; 

Para el cliente CLI oficial “psql”, consulte aquí . Y “pgAdmin3″ 1.10 (todavía en beta) tiene ” pgScript “.

Postgresql no tiene variables simples, puede usar una tabla temporal. las variables solo están disponibles en bloques de código o como una función de interfaz de usuario.

Si necesita una variable vacía, puede usar una tabla temporal:

 CREATE TEMP TABLE list AS VALUES ('foobar'); SELECT dbo.PubLists.* FROM dbo.PubLists,list WHERE Name = list.column1;