Вы должны проверить сгенерированную строку SQL, выбрав ее для вывода, например так:
BEGIN
select 'select distinct "'|| IDColumnName ||'" from
"Schema"."ZT.'|| DimPartialName ||'" dim
LEFT JOIN "Schema"."SourceTable" raw on
dim."AUDIT.CREATED_ON" = raw."Audit.CREATED_ON"
where "UPLOAD_UUID" = ' || UploadID ||' ' as SQLTEXT from dummy;
End;
Если вы сделаете это, вы обнаружите, что сгенерированный оператор SQL выглядит следующим образом (для ввода 'X', 'Y', 'Z'):
select distinct "Y" from
"Schema"."ZT.X" dim
LEFT JOIN "Schema"."SourceTable" raw on
dim."AUDIT.CREATED_ON" = raw."Audit.CREATED_ON"
where "UPLOAD_UUID" = Z
Обратите внимание, что условие WHERE
"UPLOAD_UUID" = Z
не имеет одинарных кавычек вокруг Z
.
Изменение выражения на
BEGIN
execute immediate
'select distinct "'|| :IDColumnName ||'" '
|| 'from '
|| '"Schema"."ZT.'|| :DimPartialName ||'" dim '
|| 'LEFT JOIN "Schema"."SourceTable" raw on '
|| 'dim."AUDIT.CREATED_ON" = raw."Audit.CREATED_ON" '
|| 'where "UPLOAD_UUID" = ''' || :UploadID ||''' ';
END;
должен исправить проблему.