Описание:
Недавно я пытался автоматизировать некоторые задачи на работе с помощью Pentaho (PDI), и я столкнулся с проблемой, которую мне не удалось решить/ найти решение для (я проводил исследования в течение многих часов, также пытался решить это самостоятельно).Моя цель - загрузить текстовый файл, содержащий имя процедуры PL / SQL, хранящейся на сервере, и пользовательское количество параметров для процедуры.Например, если исходный текстовый файл будет содержать следующий текст:
Test_schema.job_pkg.run_job; 12345
Он должен запустить job_pkg.run_job
процедуру из определенного соединения, ииспользуйте 12345
в качестве единственного параметра.
Проблема:
Шаг преобразования Call DB procedure
принимает только количество параметров SET, например, я установил шаг напринять 4 параметра, но процедура, которую я вызываю, принимает только 1 параметр.Я хочу иметь возможность игнорировать другие параметры, установленные в шаге.Когда я пытаюсь отправить, например, только один параметр, но шаг настроен на прием 4-х параметров, он выдает:
Вызов процедуры БД.0. - ORA-06550: строка 1, столбец 7:
PLS-00306: неверный номер или типы аргументов при вызове 'RUN_JOB'
ORA-06550: строка 1, столбец 7: PL / SQL: оператор игнорируется
Что у меня есть:
Я выполнил задание, которое запускает преобразование, которое загружает содержимое исходного файла в память, разбивает его на правильные поля с помощью Modified Java Script value
,устанавливает переменные Pentaho с извлеченными значениями, затем загружается второе преобразование, которое считывает эти переменные и передает их в виде полей на шаг Call DB procedure
.Последний шаг всегда терпит неудачу, если я вручную не удаляю все неиспользуемые аргументы.
![My current settings for Call DB Procedure step](https://i.stack.imgur.com/DcXcG.png)
Решение:
На основе AlainD ответ Я пытался использовать шаг Switch / Case
, который решил проблему.В настоящее время существует другая проблема, связанная с преобразованием значений.Если я передаю число, но задаю его как STRING в параметрах Call DB Procedure
, оно выдает
ORA-01403, данные не найдены
Это можно решить с помощью обработкиданные с помощью шага Modified Java Script Value или любого другого шага для преобразования данных в «правильный» формат.
![Final transformation view](https://i.stack.imgur.com/qgq5Y.png)