передача переменной в OLE DB Source в Oracle источник данных SSIS - PullRequest
0 голосов
/ 11 ноября 2018

У меня следующий запрос, я хочу загрузить только те данные, где last_update_date больше, чем одно из значений, я корректирую значение корректно и оно работает в источнике данных SQL Server, но когда я использую источник даты Oracle это не работает. Также я пытаюсь изменить кавычку с помощью: VARIABLENAME это дает мне эту ошибку: не все переменные связаны

SELECT 
PAPF.NATIONAL_IDENTIFIER NatnlIdNum,
PAY.PAYROLL_NAME PayrollName,
DEP.NAME DepartmentName,
PER_ASSIGNMENT_STATUS_TYPES_TL.USER_STATUS EmploymentStatDesc,
EMPLOYMENT_CATEGORY.MEANING EmploymentCatDesc,
PER_POSITION_DEFINITIONS.SEGMENT4 PositionName,
PAAF.EFFECTIVE_START_DATE EffectiveStartDate,
PAAF.EFFECTIVE_END_DATE EffectiveEndDate,
PG.NAME GradeName,
FROM PER_ALL_PEOPLE_F PAPF
INNER JOIN  PER_ALL_ASSIGNMENTS_F PAAF
ON PAPF.PERSON_ID=PAAF.PERSON_ID
LEFT JOIN PAY_ALL_PAYROLLS_F PAY
ON PAAF.PAYROLL_ID=PAY.PAYROLL_ID
AND TRUNC(SYSDATE) BETWEEN PAY.EFFECTIVE_START_DATE
AND PAY.EFFECTIVE_START_DATE
LEFT JOIN PAY_PEOPLE_GROUPS PPG
ON PAAF.PEOPLE_GROUP_ID=PPG.PEOPLE_GROUP_ID
LEFT JOIN HR_ALL_ORGANIZATION_UNITS DEP
ON PPG.SEGMENT2=DEP.ORGANIZATION_ID
LEFT JOIN fnd_lookup_values EMPLOYMENT_CATEGORY
ON  PAAF.EMPLOYMENT_CATEGORY=EMPLOYMENT_CATEGORY.lookup_code
AND EMPLOYMENT_CATEGORY.language='AR'
AND EMPLOYMENT_CATEGORY.lookup_type='EMP_CAT'
LEFT JOIN PER_ASSIGNMENT_STATUS_TYPES_TL
ON PAAF.ASSIGNMENT_STATUS_TYPE_ID=PER_ASSIGNMENT_STATUS_TYPES_TL.ASSIGNMENT_STATUS_TYPE_ID
AND PER_ASSIGNMENT_STATUS_TYPES_TL.language='AR'
LEFT JOIN HR_ALL_POSITIONS_F 
ON PAAF.POSITION_ID=HR_ALL_POSITIONS_F.POSITION_ID
AND TRUNC(SYSDATE) BETWEEN HR_ALL_POSITIONS_F.EFFECTIVE_START_DATE
AND HR_ALL_POSITIONS_F.EFFECTIVE_START_DATE
LEFT JOIN PER_POSITION_DEFINITIONS 
ON HR_ALL_POSITIONS_F.POSITION_DEFINITION_ID=PER_POSITION_DEFINITIONS.POSITION_DEFINITION_ID
LEFT JOIN PER_GRADES PG
ON PAAF.GRADE_ID=PG.GRADE_ID
LEFT JOIN HR_ALL_ORGANIZATION_UNITS SCHOOL
ON PPG.SEGMENT5=SCHOOL.ORGANIZATION_ID
LEFT JOIN HR_ALL_ORGANIZATION_UNITS ED
ON PPG.SEGMENT6=ED.ORGANIZATION_ID
WHERE TRUNC(SYSDATE) BETWEEN PAPF.EFFECTIVE_START_DATE 
AND PAPF.EFFECTIVE_END_DATE
AND PAAF.LAST_UPDATE_DATE >?

Параметры не могут быть извлечены из команды SQL. Поставщик может не помочь разобрать информацию о параметрах из команды. В этом случае используйте режим доступа «Команда SQL из переменной», в котором вся команда SQL хранится в переменной. ORA-00920: недопустимый реляционный оператор (OraOLEDB)

1 Ответ

0 голосов
/ 13 ноября 2018

Вы можете построить запрос в строковой переменной, затем использовать опцию «Команда SQL из переменной» в источнике OLE DB и добавить параметр в запрос. Однако при этом убедитесь, что формат даты, передаваемый в источник данных Oracle, является ожидаемым форматом даты. Чтобы объединить параметр даты в строковой переменной, содержащей SQL, его нужно будет преобразовать для строки формат все равно будет сохранен, однако это не гарантирует, что он будет передан как тип данных даты, и может потребоваться приведение. Также обратите внимание, что функция приведения строки (DT_STR, number of characters, code page) вернет ошибку, если длина преобразованной строки превышает указанную длину и впоследствии она обрезается. Ниже приведен пример выражения для SQL в строковой переменной.

"SELECT 
PAPF.NATIONAL_IDENTIFIER NatnlIdNum,
PAY.PAYROLL_NAME PayrollName,
DEP.NAME DepartmentName,
PER_ASSIGNMENT_STATUS_TYPES_TL.USER_STATUS EmploymentStatDesc,
EMPLOYMENT_CATEGORY.MEANING EmploymentCatDesc,
PER_POSITION_DEFINITIONS.SEGMENT4 PositionName,
PAAF.EFFECTIVE_START_DATE EffectiveStartDate,
PAAF.EFFECTIVE_END_DATE EffectiveEndDate,
PG.NAME GradeName,
FROM PER_ALL_PEOPLE_F PAPF
INNER JOIN  PER_ALL_ASSIGNMENTS_F PAAF
ON PAPF.PERSON_ID=PAAF.PERSON_ID
LEFT JOIN PAY_ALL_PAYROLLS_F PAY
ON PAAF.PAYROLL_ID=PAY.PAYROLL_ID
AND TRUNC(SYSDATE) BETWEEN PAY.EFFECTIVE_START_DATE
AND PAY.EFFECTIVE_START_DATE
LEFT JOIN PAY_PEOPLE_GROUPS PPG
ON PAAF.PEOPLE_GROUP_ID=PPG.PEOPLE_GROUP_ID
LEFT JOIN HR_ALL_ORGANIZATION_UNITS DEP
ON PPG.SEGMENT2=DEP.ORGANIZATION_ID
LEFT JOIN fnd_lookup_values EMPLOYMENT_CATEGORY
ON  PAAF.EMPLOYMENT_CATEGORY=EMPLOYMENT_CATEGORY.lookup_code
AND EMPLOYMENT_CATEGORY.language='AR'
AND EMPLOYMENT_CATEGORY.lookup_type='EMP_CAT'
LEFT JOIN PER_ASSIGNMENT_STATUS_TYPES_TL
ON PAAF.ASSIGNMENT_STATUS_TYPE_ID=PER_ASSIGNMENT_STATUS_TYPES_TL.ASSIGNMENT_STATUS_TYPE_ID
AND PER_ASSIGNMENT_STATUS_TYPES_TL.language='AR'
LEFT JOIN HR_ALL_POSITIONS_F 
ON PAAF.POSITION_ID=HR_ALL_POSITIONS_F.POSITION_ID
AND TRUNC(SYSDATE) BETWEEN HR_ALL_POSITIONS_F.EFFECTIVE_START_DATE
AND HR_ALL_POSITIONS_F.EFFECTIVE_START_DATE
LEFT JOIN PER_POSITION_DEFINITIONS 
ON HR_ALL_POSITIONS_F.POSITION_DEFINITION_ID=PER_POSITION_DEFINITIONS.POSITION_DEFINITION_ID
LEFT JOIN PER_GRADES PG
ON PAAF.GRADE_ID=PG.GRADE_ID
LEFT JOIN HR_ALL_ORGANIZATION_UNITS SCHOOL
ON PPG.SEGMENT5=SCHOOL.ORGANIZATION_ID
LEFT JOIN HR_ALL_ORGANIZATION_UNITS ED
ON PPG.SEGMENT6=ED.ORGANIZATION_ID
WHERE TRUNC(SYSDATE) BETWEEN PAPF.EFFECTIVE_START_DATE 
AND PAPF.EFFECTIVE_END_DATE
AND PAAF.LAST_UPDATE_DATE > " +  (DT_STR, 25, 1252)@[$Package:YourDateParameter]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...