Oracle Link Query возвращает странные значения - PullRequest
0 голосов
/ 17 ноября 2011

Я разрабатываю процедуру Store, которая запрашивает сервер Oracle Link Server и возвращает значения. Если я скопирую оператор, который напечатан на экране, и запустится в Oracle SQL Developer, он вернет цифру правильно.

Но когда я запускаю этот запрос как ссылку, он возвращает неправильную цифру. Я полностью потерян.

DECLARE @MDX NVARCHAR(MAX)
DECLARE @stmt NVARCHAR(MAX)

SET @MDX = dbo.fnCrseReviewDiversityDataStarts(117) 
Set @stmt = 'SELECT * FROM OpenQuery(ORA_Link, ''' + REPLACE(@MDX, '''', '''''') + ''')'
PRINT @MDX

EXEC (@stmt)

Пожалуйста, игнорируйте вышеприведенные операторы SQL. Я просто использовал следующие sqls напрямую, и это не работает. Я обнаружил, что функция months_between не работает так, как работает в OracleServer.

SELECT * FROM OpenQuery(ORA_LINK, 'select t2.s_studentreference "Student reference",
to_char(t3.e_start,''YYYY'') "Start",
t1.p_dob,
''31-Aug-''||to_char(t3.e_start,''YYYY'') "StartDate",
months_between(t1.p_dob,''31-Aug-''||to_char(t3.e_start,''YYYY'')) "DifferenceMonths"    
from capd_student t2,capd_person t1,capd_moduleenrolment t3 
where t2.s_id(+)=t1.p_id and (t3.e_student=t1.p_id) and (t3.e_reference=to_char(1109315)) 
and t3.e_status = ''L'''
);

1 Ответ

0 голосов
/ 17 ноября 2011

Я нашел ответы.

В Oracle, если мы используем '01 -AUG-2010 ', он автоматически распознается как дата.

Но, в проходном запроседолжен использовать to_date ('01 -AUG-2010 ',' DD-MON-YYYY ') и явно должен сказать, что это дата.

Не знаю почему, но интересно.Если вы знаете ответ, пожалуйста, дайте мне знать.Большое спасибо всем.

...