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

Làm thế nào để gọi thủ tục PostgreSQL trong Java?

Bạn có thể đơn giản hóa phần lớn chức năng. (Giữ chức năng đơn giản vì lợi ích của câu hỏi.)

CREATE OR REPLACE FUNCTION get_geom_difference()
   RETURNS integer AS
$BODY$
   SELECT num
   FROM   filedata
   WHERE  num = 1 
   LIMIT  1;  -- needed if there can be more than one rows with num = 1
$BODY$    LANGUAGE SQL;

Mặc dù về mặt kỹ thuật, những gì bạn có trong câu hỏi cũng sẽ hoạt động - miễn là loại dữ liệu phù hợp. Phải không? Có phải cột filedata.num không thuộc loại integer ? Đó là những gì tôi thu thập được từ ví dụ. Về câu hỏi khác của bạn Tôi đã giả định numeric vì thiếu thông tin. Ít nhất một trong số chúng sẽ không thành công.

Nếu kiểu trả về của hàm không khớp với giá trị trả về, bạn sẽ gặp lỗi từ hàm PostgreSQL. Được định cấu hình đúng cách, nhật ký PostgreSQL của bạn sẽ có thông báo lỗi chi tiết trong trường hợp này.

Bạn thấy sao, khi bạn tạo hàm trên trong PostgreSQL và sau đó gọi:

SELECT get_geom_difference(1);

từ psql . (Tốt hơn là trong cùng một phiên để loại trừ hỗn hợp cơ sở dữ liệu, cổng, máy chủ hoặc người dùng.)

Việc gọi một hàm đơn giản lấy một tham số và trả về một giá trị vô hướng có vẻ khá dễ dàng. Chương 6.1 của sổ tay PostgreSQL JDBC có một ví dụ đầy đủ dường như hoàn toàn đồng ý với những gì bạn có trong câu hỏi của mình (Tuy nhiên, chuyên môn của tôi là về Postgres chứ không phải JDBC).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tính Tổng tích lũy trong PostgreSQL

  2. C # .NET + PostgreSQL

  3. hàm xlookup trong SQL

  4. Làm cách nào để ghi dữ liệu từ R vào các bảng PostgreSQL với khóa chính tự động tăng thêm?

  5. PostgreSQL và khóa