Вызовите функцию PL SQL с типом записи в качестве ввода - PullRequest
0 голосов
/ 06 февраля 2019

Мне нужно вызвать функцию PL SQL в Oracle DB с подписью, как указано ниже:

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 для вставки данных с несколькими строками.

1 Ответ

0 голосов
/ 06 февраля 2019

Не знаю, как вы хотите вызывать свою функцию, но давайте предположим, что она в 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

Это создает все необходимые объекты с жестко закодированными значениями.Возможно, вы хотите забрать их со стола?Если так, то принцип тот же: создайте экземпляр каждого объекта из соответствующего источника данных.

...