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

kiểu do người dùng xác định làm tham số đầu vào trong hàm PostgreSQL

Để gọi hàm từ truy vấn SQL, bạn phải truyền các tham số sang kiểu tùy chỉnh của mình như trong ví dụ sau.

select form_insertion(array[
    cast(row('Form 1', 1, current_date, 1, current_date, 'This is form 1', 
        array[
            cast(row('section-1', 'Section One', 1) as section),
            cast(row('section-2', 'Section Two', 2) as section),
            cast(row('section-3', 'Section Three', 3) as section)
        ]
    ) as form_details),
    cast(row('Form 2', 2, current_date, 1, current_date, 'This is form 2', 
        array[
            cast(row('section-2', 'Section Two', 2) as section),
            cast(row('section-3', 'Section Three', 3) as section)
        ]
    ) as form_details),
    cast(row('Form 3', 1, current_date, 1, current_date, 'This is form 3', 
        array[
            cast(row('section-1', 'Section One', 1) as section),
            cast(row('section-3', 'Section Three', 3) as section)
        ]
    ) as form_details)
])

Lưu ý rằng mảng PostgreSQL không có thuộc tính .COUNT. Bạn có thể lặp qua một mảng theo phạm vi chỉ mục với array_upper chức năng:

for i IN 1..array_upper(formdetails, 1)
LOOP 
   -- your code here
END LOOP;

Kể từ PostgreSQL 9.1, bạn có thể sử dụng câu lệnh FOREACH để lặp qua mảng:

create or replace function form_insertion(formdetails form_details[])
    returns varchar as $$
declare
    detail form_details;
    sec section;
begin
    foreach detail in array formdetails
    LOOP 
       RAISE NOTICE '%', detail.formName;

       foreach sec in array detail.sections
       LOOP
         raise NOTICE '%', sec.sectionName;
       END LOOP;
    END LOOP;
    return '';
end;$$
    language plpgsql;



  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ó một tính năng giống SSIS trong PostgreSQL không?

  2. Các thông số có giá trị của bảng Postgresql JDBC

  3. Cách sửa lỗi Lỗi:Cơ sở dữ liệu chưa được khởi tạo và mật khẩu siêu người dùng không được chỉ định.

  4. sp_send_dbmail thay thế trong postgres? Cách dễ dàng để gửi báo cáo qua email Postgres?

  5. Toán tử không tồn tại:integer =integer [] trong một truy vấn với BẤT KỲ