PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Lặp lại kích thước mảng trong plpgsql

Kể từ PostgreSQL 9.1 FOREACH tiện lợi :

DO
$do$
DECLARE
   m   varchar[];
   arr varchar[] := array[['key1','val1'],['key2','val2']];
BEGIN
   FOREACH m SLICE 1 IN ARRAY arr
   LOOP
      RAISE NOTICE 'another_func(%,%)',m[1], m[2];
   END LOOP;
END
$do$

Giải pháp cho phiên bản cũ hơn :

DO
$do$
DECLARE
   arr varchar[] := '{{key1,val1},{key2,val2}}';
BEGIN
   FOR i IN array_lower(arr, 1) .. array_upper(arr, 1)
   LOOP
      RAISE NOTICE 'another_func(%,%)',arr[i][1], arr[i][2];
   END LOOP;
END
$do$

Ngoài ra, không có sự khác biệt giữa varchar[]varchar[][] cho hệ thống kiểu PostgreSQL. Tôi giải thích chi tiết hơn ở đây.

DO câu lệnh yêu cầu ít nhất PostgreSQL 9.0 và LANGUAGE plpgsql là mặc định (vì vậy bạn có thể bỏ qua phần khai báo).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có gì mới trong PostgreSQL 13?

  2. Không thể tải các mô-đun sql vào cụm cơ sở dữ liệu trong khi Cài đặt PostgreSQL

  3. Tại sao giá trị NULL lại xuất hiện đầu tiên khi đặt hàng DESC trong một truy vấn PostgreSQL?

  4. psycopg2 cách đối phó với TypeError:không phải tất cả các đối số được chuyển đổi trong quá trình định dạng chuỗi

  5. CASCADE XÓA chỉ một lần