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

Sửa đổi hàm PLSQL để trả về nhiều hàng từ cùng một cột

bạn cần thực hiện một số thay đổi trong chức năng của mình. về phía java, nó sẽ được chọn đơn giản

  • bạn cần thay đổi loại chức năng của mình từ int vào collection đọc về các hàm của bảng tại đây Hàm của bảng
  • user oracle table() hàm chuyển đổi kết quả của hàm của bạn thành tableit cho phép bạn sử dụng hàm của mình trong các truy vấn. đọc thêm về cú pháp tại đây: Tập hợp bảng:Ví dụ

đây là ví dụ về cách gọi hàm của bạn từ java:

select t.column_value as process_id 
      from  table(FUNCTION_1(1)) t

--result
    PROCESS_ID
1   1
2   2


--we need create new type - table of integers
CREATE OR REPLACE TYPE t_process_ids IS TABLE OF int;

--and make changes in function
CREATE OR REPLACE FUNCTION FUNCTION_1(
    c_id IN INT)
  RETURN t_process_ids
AS
  l_ids  t_process_ids := t_process_ids();
BEGIN
  --here I populated result of select into the local variables
  SELECT process.id
  bulk collect into l_ids
  FROM PROCESS
  WHERE process.corporate_id = c_id
  ORDER BY process.corporate_id;

  --return the local var
  return l_ids;
END FUNCTION_1;

--the script that I used for testing
create table process(id int, corporate_id int, date_created date);
insert into process values(1, 1, sysdate);
insert into process values(2, 1, sysdate);
insert into process values(3, 2, sysdate);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để trích xuất nhóm từ biểu thức chính quy trong Oracle?

  2. Transpose không nhất quán

  3. Xóa hàng con và hàng mẹ bằng một tập lệnh SQL

  4. Làm thế nào để tạo lược đồ trong Oracle bằng SQL Developer?

  5. java.sql.SQLException:ORA-06550:sau khi gọi thủ tục từ mã java