Ограничение генерации динамических запросов преобразования SQL

Я использую преобразование выражения для динамического создания запроса, который служит входом для моего преобразования SQL. Поскольку запрос уже сгенерирован в выражении, я использую подстановку строк.

Проблема: мой сгенерированный запрос имеет длину более 4000 символов, и поэтому запрос усекается при чтении в преобразовании SQL (поскольку порт запроса — varchar2 и он принимает максимум 4000 символов) и выдает ошибку.

Как мне преодолеть эту проблему?

К сожалению, я не могу использовать привязку параметров, поскольку параметры могут использоваться только в предложении WHERE запроса, а мой запрос не очень прост.


person rcmaiden    schedule 29.01.2019    source источник
comment
Поместить запрос в хранимую процедуру и вместо этого вызвать ее?   -  person OldProgrammer    schedule 29.01.2019
comment
Вы пытались использовать CLOB вместо VARCHAR2 (4000)?   -  person Boneist    schedule 29.01.2019
comment
OldProgrammer — я обязательно попробую и дам вам знать, как это работает. Boneist - я не могу использовать CLOB, так как использую подстановку строк.   -  person rcmaiden    schedule 29.01.2019
comment
Хранимая процедура не будет работать, так как мой запрос генерируется динамически   -  person rcmaiden    schedule 29.01.2019
comment
Спасибо rcmaiden. Можете ли вы указать, какую версию базы данных вы используете? Могут быть доступны разные варианты, например, после 12.2, чем до него.   -  person alexgibbs    schedule 30.01.2019
comment
Привет Алексгиббс, я использую оракул 11.2.0   -  person rcmaiden    schedule 30.01.2019
comment
@rcmaiden вы используете замену строк ... где? В БД? Если это так, это должно работать для CLOB   -  person Boneist    schedule 01.02.2019
comment
@boneist Я использовал замену строк в преобразовании sql, и он продолжал усекать мой запрос до 4000 символов.   -  person rcmaiden    schedule 02.02.2019


Ответы (2)


Я придумал обходной путь для этой проблемы. После динамического создания запроса я загрузил запрос в плоский файл, который будет служить файлом параметров для моей последующей партии. Затем следующий пакет будет запускать запрос на основе параметризованного запроса SQ (который был параметризован в моем предыдущем рабочем процессе). Это устранило возможность усечения запроса, поскольку в преобразовании SQ нет ограничения в 4000 символов.

person rcmaiden    schedule 30.01.2019

Строковый порт в преобразованиях Informatica может обрабатывать диапазон символов от 1 до 104 857 600.
Почему вы не увеличиваете размер (сгенерированного) выходного порта в преобразовании Expression и входного порта в преобразовании SQL до более высокого значения ?

person Ikacho    schedule 07.02.2019
comment
Проблема связана с собственным типом данных, который я должен выбрать при преобразовании SQL. Это не позволяет более 4000 символов - person rcmaiden; 07.02.2019