Сохраните Oracle параметр clob хранимой процедуры (для создания формата JSON) в файл с помощью Informatica - PullRequest
0 голосов
/ 28 мая 2020

Я хочу создать файл JSON таблицы oracle. Для этого я создал Oracle SP:

 PROCEDURE P_JSON_GEN( SCHEMA_NAME_IN IN VARCHAR2 DEFAULT 'CDM_MART', TABLE_NAME_IN IN VARCHAR2 DEFAULT NULL, P_JSON OUT CLOB) IS  

  v_schema_name varchar2(20);
  v_table_name varchar2(30);
  v_sql varchar2(32767);
  type t_json is TABLE of varchar2(1000) INDEX BY BINARY_INTEGER;
  table_json t_json; 
  v_json clob;
  CURSOR c_col_lst IS SELECT column_name FROM all_tab_cols WHERE OWNER = 'CDM_MART' AND table_name = (SELECT table_name FROM all_synonyms WHERE synonym_name = table_name_in AND OWNER= schema_name_in);

  BEGIN 

v_schema_name := schema_name_in; 
v_table_name := TABLE_NAME_IN;
v_sql := 'SELECT json_object(''';
v_json := '';

for n in c_col_lst
             loop
                v_sql := v_sql ||n.column_name||''' VALUE '||n.column_name||',''';
             end loop;
             v_sql := RTRIM(v_sql, ',''') || ' FORMAT JSON) as json FROM '||TABLE_NAME_IN;

             execute immediate v_sql BULK COLLECT into table_json;
             DBMS_OUTPUT.PUT_LINE (v_sql);
             for i in 1 .. table_json.count
             loop 
             v_json := v_json || table_json(i) || chr(10);
             end loop;

        P_JSON := v_sql;
        RETURN; 
    end;

Таким образом, он создает мне выходной CLOB (поскольку это длинная строка), и, поскольку я не могу сохранить его на сервере БД, я необходимо сохранить его на сервере Informatica, поэтому я хотел бы использовать WFL со следующим сопоставлением, чтобы сохранить вывод в файл на сервере.

mapping

WFL выполняется успешно, файл создается, но ничего не записывается. Когда я изменил вывод на varchar2 (4000) в SP и строку (4000) в сопоставлениях, он создал файл.

Не могли бы вы подсказать, как мне разрешить несоответствие типов данных и можно ли сохранить такую ​​длинную переменную в файл?

1 Ответ

0 голосов
/ 28 мая 2020

Да, вы можете сохранить максимальную длину строки в файл. Глядя на ваш дизайн, кажется, что нет никаких конфликтов по типу данных. Вы можете использовать преобразование строки в строку

...