调用 PL SQL 函数,记录类型作为输入



我必须在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

这将使用硬编码值实例化所有必需的对象。也许你想从某个桌子上拿起它们?如果是这样,则原理相同:从相关数据源实例化每个对象。

最新更新