Oracle サーバーに対して openquery を使用してコードを正常に実行できません。
手順全体の一部のみを提示する必要があったため、フィールド名/データ型は考慮しないでください。かなり長いです。問題は引用符などにあると思います...
手順は問題なくコンパイルされます。プロシージャを実行するたびに、エラーが発生します。
引用: Msg 105, Level 15, State 1, Line 53 文字列 'SELECT TO_NUMBER(XYZ_1) XYZ_1, XYZ_2,
cast (''''0'''' as number(5)) as B1, cast(''''1753-01-01'''' as date) NULL_DATE
私は道に迷っています - 抜けている引用符をどこに置くべきですか?
コード:
コード: [すべて選択] [表示/非表示] CREATE TABLE #tmpXYZ ヘッダー ( [XYZ_1] [int] PRIMARY KEY, [XYZ_2] varchar, [XYZ_3] varchar, -- more fields
[XYZ_N] varchar )
宣言 @sqlInv nvarchar(3000) セット @sqlInv =
'insert into #tmpXYZ Header (
[XYZ_1],
[XYZ_2],
[XYZ_3],
-- more fields
[XYZ_N]
)
select
* FROM OPENQUERY(XYZ_ORACLE,
''SELECT TO_NUMBER(XYZ_1) XYZ_1,
XYZ_2,
cast (''''0'''' as number(5)) as B1,
cast(''''1753-01-01'''' as date) NULL_DATE,
-- more fields
cast ('''' '''' as varchar(20)) as A19
from XYZ.V_HEADER
where
(DATE >= ''''TO_DATE(''''' + @startDate + ''''', ''''YYYYMMDD'''')'''' AND
DATE <= ''''TO_DATE(''''' + @endDate + ''''', ''''YYYYMMDD'''')'''' AND
QWE = ''''0'''' AND
ABC = ''''13'''' ) '' )
'
exec sp_executesql @sqlInv