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

Memisahkan string yang dipisahkan koma dalam fungsi PL/pgSQL

Blue Star telah menyebutkan bahwa ada fungsi bawaan untuk mengubah string yang dipisahkan koma menjadi array.

Tetapi saya akan menyarankan untuk tidak memberikan string yang dipisahkan koma untuk memulai. Jika Anda ingin memberikan nomor variabel ID, gunakan variadic parameter.

Anda juga tidak perlu menjalankan SELECT terlebih dahulu, Anda dapat menanyakan sistem berapa banyak baris yang diperbarui setelah pernyataan UPDATE.

CREATE FUNCTION update_status(p_status text, p_id variadic integer[]) 
  RETURNS character varying
  LANGUAGE plpgsql
AS
$$
DECLARE
  v_row_count bigint DEFAULT 0;
BEGIN
  UPDATE test
  SET status     = p_status,
      updated_by = 'admin'
  WHERE user_id = any (p_id);
    
  get diagnostics v_row_count = row_count;
  if v_row_count = 0 then 
    return 'User not found';
  end if;
  
  return concat(v_row_count, ' users updated');
END
$$;

Anda dapat menggunakannya seperti ini:

select update_status('active', 1);
select update_status('active', 5, 8, 42);

Jika karena alasan tertentu, Anda "harus" meneruskan ini sebagai argumen tunggal, gunakan array nyata sebagai gantinya:

CREATE FUNCTION update_status(p_status text, p_id integer[]) 

Kemudian berikan seperti ini:

select update_status('active', array[5,8,42]);

atau

select update_status('active', '{5,8,42}');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menggunakan daftar sebagai sumber parameter untuk kueri SQL dengan Vertx JDBC Client?

  2. Cloud9 + rails + penggunaan Postgresql

  3. Konektor Postgresql menggunakan VC++

  4. Fungsi jendela PostgreSQL:row_number() over (partisi col order by col2)

  5. Nilai pertama dan terakhir dari fungsi jendela dalam satu baris di PostgreSQL