我必须在Oracle DB中调用一个带有签名的PL SQL函数,如下所示:
FUNCTION funcName (input IN input_type) RETURN funcName_RETURN;
input_type定义如下:
create or replace TYPE "INPUT_ROW" AS OBJECT
(
Data1 VARCHAR2(255 BYTE),
Data2 VARCHAR2(255 BYTE)
)
create or replace TYPE "INPUT_TABLE"
AS VARRAY (50000) OF INPUT_ROW
create or replace TYPE "INPUT_TYPE" AS OBJECT
(
file_date DATE,
all_rows INPUT_TABLE
)
我正在尝试从另一个 pl sql 块调用此过程以插入多行数据。
不确定如何调用函数,但让我们假设它在SQL中:
select funcname( input_type (
date '2019-02-05' -- file_date
, input_table (
input_row('some val 1', 'another val 1')
, input_row('some val 2', 'another val 2')
) -- all rows
) -- input
) as funcname
from dual
这将使用硬编码值实例化所有必需的对象。也许你想从某个桌子上拿起它们?如果是这样,则原理相同:从相关数据源实例化每个对象。