¿Cómo asignar el resultado de una consulta a una variable en PL / pgSQL, el lenguaje de procedimiento de PostgreSQL?
Tengo una funcion:
CREATE OR REPLACE FUNCTION test(x numeric)
RETURNS character varying AS
$BODY$
DECLARE
name character varying(255);
begin
name ='SELECT name FROM test_table where id='||x;
if(name='test')then
--do somthing
else
--do the else part
end if;
end;
return -- return my process result here
$BODY$
LANGUAGE plpgsql VOLATILE
En la función anterior, necesito almacenar el resultado de esta consulta:
'SELECT name FROM test_table where id='||x;
a la variable name
.
¿Cómo procesar esto?
SELECT test_table.column1, test_table.column2 INTO variable1, variable2 FROM test_table WHERE id = x;
Mientras asigne una sola variable, también puede usar la asignación simple en una función plpgsql:
O use
SELECT INTO
como @mu ya proporcionado .Esto también funciona:
Pero mejor use uno de los primeros dos métodos más claros, como comentó @Pavel.
Acorté la sintaxis con un alias de tabla adicionalmente.
Actualización: eliminé mi ejemplo de código y sugiero usar
IF EXISTS()
en su lugar como lo proporciona @Pavel .fuente
El patrón habitual es
EXISTS(subselect)
:Este patrón se utiliza en PL / SQL, PL / pgSQL, SQL / PSM, ...
fuente
Manifestación:
fuente
Puede usar el siguiente ejemplo para almacenar un resultado de consulta en una variable usando PL / pgSQL:
fuente