Wie ordne ich das Ergebnis einer Abfrage einer Variablen in PL / pgSQL zu, der prozeduralen Sprache von PostgreSQL?
Ich habe eine Funktion:
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
In der obigen Funktion muss ich das Ergebnis dieser Abfrage speichern:
'SELECT name FROM test_table where id='||x;
zur Variablen name
.
Wie verarbeite ich das?
SELECT test_table.column1, test_table.column2 INTO variable1, variable2 FROM test_table WHERE id = x;
Solange Sie eine einzelne Variable zuweisen, können Sie auch eine einfache Zuweisung in einer plpgsql-Funktion verwenden:
Oder verwenden Sie
SELECT INTO
wie @mu bereits zur Verfügung gestellt .Das funktioniert auch:
Verwenden Sie jedoch besser eine der ersten beiden klareren Methoden, wie @Pavel kommentierte.
Ich habe die Syntax zusätzlich mit einem Tabellenalias gekürzt.
Update: Ich habe mein Codebeispiel entfernt und empfehle, es
IF EXISTS()
stattdessen wie von @Pavel bereitgestellt zu verwenden .quelle
Das übliche Muster ist
EXISTS(subselect)
:Dieses Muster wird in PL / SQL, PL / pgSQL, SQL / PSM, ...
quelle
Demo:
quelle
Mit dem folgenden Beispiel können Sie ein Abfrageergebnis mithilfe von PL / pgSQL in einer Variablen speichern:
quelle