PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menggunakan parameter sebagai nama kolom dalam fungsi Postgres

Anda tidak dapat menggunakan parameter sebagai pengidentifikasi (=nama kolom), Anda memerlukan SQL dinamis untuk itu. Dan itu membutuhkan PL/pgSQL:

CREATE OR REPLACE FUNCTION day_entries(p_id int, p_column text) 
  RETURNS BIGINT[] 
AS
$$
declare 
  l_result bigint[];
begin
  execute format('SELECT %I FROM days WHERE id = $1', p_column) 
     using p_id
     into l_result;
  return l_result;
end;     
$$
LANGUAGE plpgsql;

format() menangani pengidentifikasi dengan benar saat membangun SQL dinamis. $1 adalah placeholder parameter dan nilai untuk itu diteruskan dengan using p_id klausa dari execute pernyataan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Psql daftar semua tabel

  2. Postgresql mengubah jenis kolom dari int ke UUID

  3. sql ORDER BY beberapa nilai dalam urutan tertentu?

  4. Masalah koneksi dengan SQLAlchemy dan beberapa proses

  5. Bagaimana Anda bisa membuat pengguna aktif terhubung ke database postgreSQL melalui SQL?