【发布时间】:2020-02-22 17:51:34
【问题描述】:
我想知道如何实现以下逻辑:
CREATE TABLE STUDENT (
STUDENT_ID NUMBER (5) NOT NULL,
NAME VARCHAR2 (255) NOT NULL,
SURENAME VARCHAR2 (255) NOT NULL,
BIRTH_DATE DATE NOT NULL,
PRIMARY KEY (STUDENT_ID)
)
然后假设通过调用PL/SQL过程找到相似的学生:
CREATE OR REPLACE PROCEDURE findStudentByName(p_name IN STUDENT.NAME%TYPE, c_student OUT SYS_REFCURSOR)
IS
BEGIN
OPEN c_student FOR
SELECT * FROM STUDENT WHERE NAME LIKE p_name || '%';
END;
/
然后……
DECLARE
c_student SYS_REFCURSOR;
temp_student STUDENT%ROWTYPE;
BEGIN
-- records are assign to cursor 'c_student' after calling findStudentByName procedure
findStudentByName('John',c_student);
LOOP
--fetch cursor 'c_student' into STUDENT table type 'temp_student'
FETCH c_student INTO temp_student;
-- exit if no more records
EXIT WHEN c_student%NOTFOUND;
-- call java procedure the matched name
-- HOW CAN I PASS ARRAY OF STUDENT%ROWTYPE to java procedure?
END LOOP;
CLOSE c_student;
END;
/
我的问题是如何将 ARRAY of records 传递给 java 程序?
【问题讨论】:
-
签出this。
-
Java 程序在哪里?它是使用
LOADJAVAutility 加载到数据库中还是使用CREATE JAVA编译到数据库中,还是在数据库外部? -
@VBokšić 所以你建议使用
create or replace type student_rows as table of STUDENT%ROWTYPE;而不是光标,不是吗? -
@MT0 当然可以!
标签: java oracle plsql oracle11g