Bagaimana cara menetapkan hasil kueri ke variabel dalam PL / pgSQL, bahasa prosedural PostgreSQL?
Saya memiliki fungsi:
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
Dalam fungsi di atas saya perlu menyimpan hasil dari query ini:
'SELECT name FROM test_table where id='||x;
ke variabel name
.
Bagaimana prosesnya?
SELECT test_table.column1, test_table.column2 INTO variable1, variable2 FROM test_table WHERE id = x;
Selama Anda menetapkan variabel tunggal, Anda juga dapat menggunakan tugas polos dalam fungsi plpgsql:
Atau gunakan
SELECT INTO
seperti @mu sudah disediakan .Ini juga berfungsi:
Tapi lebih baik gunakan salah satu dari dua yang pertama, metode yang lebih jelas, seperti komentar @Pavel.
Saya mempersingkat sintaks dengan alias tabel.
Pembaruan: Saya menghapus contoh kode saya dan menyarankan untuk menggunakan
IF EXISTS()
sebagai gantinya disediakan oleh @Pavel .sumber
Pola yang biasa adalah
EXISTS(subselect)
:Pola ini digunakan dalam PL / SQL, PL / pgSQL, SQL / PSM, ...
sumber
Demo:
sumber
Anda bisa menggunakan contoh berikut untuk menyimpan hasil kueri dalam variabel menggunakan PL / pgSQL:
sumber