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

Làm cách nào để lấy các cột riêng lẻ từ bảng được trả về từ một hàm?

Để phân tách các hàng bạn lấy lại từ hàm, hãy xử lý nó giống như bất kỳ bảng nào khác:

SELECT * FROM karta_pacjenta('foo45678901');

Các hàm trả về một tập hợp các hàng còn được gọi là "hàm bảng".

Ngoài ra, những gì bạn trình bày sẽ không hiệu quả.

CREATE  FUNCTION karta_pacjenta(_pe varchar)
  RETURNS TABLE(data DATE, imie TEXT, nazwisko TEXT
              , diagnoza TEXT,przepisany lek TEXT)  AS
$func$
SELECT w.dzien, p.imie, p.nazwisko, ch.nazwa, l.nazwa
FROM   pacjenci  p
JOIN   diagnozy  d  USING (pesel) -- shorthand if columns are unambiguous
JOIN   wizyty    w  USING (pesel)
JOIN   choroby   ch ON ch.kod_choroby = d.kod_choroby
JOIN   recepty   r  ON r.nr_wizyty = w.nr_wizyty
JOIN   leki      l  ON l.kod_leku = r.kod_leku 
WHERE  p.pesel = _pe
$func$ LANGUAGE sql;
  • Dấu ngoặc kép cho tên cột là một lỗi cú pháp. Sẽ phải có dấu ngoặc kép. Tuy nhiên, tốt hơn hết là bạn nên sử dụng các tên không được trích dẫn, hợp pháp, viết thường.

  • Không trích dẫn tên ngôn ngữ, đó là một số nhận dạng.

Phần còn lại là tùy chọn, nhưng lời khuyên tốt.

  • Một hàm SQL đơn giản thực hiện công việc ở đây.

  • Sử dụng cú pháp THAM GIA rõ ràng. Kết quả tương tự nhưng dễ duy trì hơn nhiều.

  • Việc sử dụng varchar(11) có lẽ là vô nghĩa thay vì chỉ varchar hoặc text như kiểu tham số. (Áp dụng ngoại lệ trường hợp góc.)

  • Sử dụng báo giá đô la - điều này hoàn toàn không bắt buộc ở đây, nhưng nói chung là phong cách tốt để trích dẫn nội dung hàm. Không sớm thì muộn, bạn sẽ muốn bao gồm các dấu ngoặc kép trong phần nội dung.




  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ác tính năng mới tốt nhất trong PostgreSQL 14

  2. Định dạng tháng bằng chữ số La Mã trong PostgreSQL

  3. Đặt lại trình tự trong jpa

  4. Runtime.getRuntime (). Thực thi để truyền tham số khi được nhắc

  5. Chạy di chuyển Django trên dự án dày đặc