我有以下存储过程:Oracle存储过程 - 存储查询结果
CREATE OR REPLACE PROCEDURE SP
(
query IN VARCHAR2(200),
CURSOR_ OUT SYS_REFCURSOR
)
AS
row_ PROCESSED_DATA_OBJECT;
processed PROCESSED_DATA_TABLE;
BEGIN
.....
END;
与
CREATE TYPE processed_data_obj AS OBJECT(
id INTEGER,
value FLOAT
);
/
CREATE OR REPLACE TYPE processed_data_table AS TABLE OF processed_data_obj;
/
我打电话传递查询作为输入参数要执行的存储过程。 查询是类似的东西:
SELECT A,B FROM TABLE WHERE
,其中A,B和表是不固定的(在Java程序执行期间运行时所定义的),所以我不知道提前它们的值。
我怎样才能获取/存储每个返回的行在我的结构?
processed PROCESSED_DATA_TABLE;
由于
从我的理解你的问题,你将不得不求助于动态SQL。坏消息是,你将无法使用本地动态SQL(通过EXECUTE IMMEDIATE),你必须使用DBMS_SQL包(调查)来使用称为方法4的东西。如果确实如此,那么这将不是一件容易的事。祝你好运 –
“A,B和TABLE不固定”。总是会有两列,一个整数和一个数字,这是否是固定的?或者投影的列数可能更多或更少? – APC
@APC总是会有2列。列和表的名称可能不同 – Fab