0

Oracle Link Server にクエリを実行して値を返す Store プロシージャを開発しています。画面に出力されたステートメントをコピーして Oracle SQL Developer で実行すると、正しく Figure が返されます。

しかし、それをリンク クエリとして実行すると、間違った図が返されます。私は完全に迷っています。

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 ステートメントは無視してください。次のSQLを直接使用しましたが、機能していません。OracleServer で動作するように、months_between 関数が動作していないことがわかりました。

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'''
);
4

1 に答える 1

0

私は答えを見つけました。

Oracle では、「01-AUG-2010」を使用すると、自動的に日付として認識されます。

しかし、パス スルー クエリでは、to_date('01-AUG-2010', 'DD-MON-YYYY') を使用する必要があり、これが日付であることを明示的に伝える必要があります。

理由はわかりませんが、興味深いものです。答えがわかれば教えてください。どうもありがとうございました。

于 2011-11-17T10:48:13.820 に答える