आपको अपने कार्य में कुछ बदलाव करने की आवश्यकता है। जावा पक्ष पर यह सरल चयन होगा
- आपको अपने फ़ंक्शन के प्रकार को
int
. से बदलने की आवश्यकता हैcollection
. के लिए टेबल फंक्शन्स के बारे में यहाँ पढ़ें टेबल फंक्शन्स - उपयोगकर्ता ओरेकल
table()
अपने फ़ंक्शन के परिणाम को तालिका में बदलने के लिए फ़ंक्शन, यह आपको प्रश्नों में अपने फ़ंक्शन का उपयोग करने देता है। सिंटैक्स के बारे में यहाँ और पढ़ें:तालिका संग्रह:उदाहरण
जावा से अपने फ़ंक्शन को कॉल करने का उदाहरण यहां दिया गया है:
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);