2016-09-06 35 views
0

私は、リンクされたOracleサーバーの1つからいくつかのデータを取得するSQLクエリを作成しています。SQL OpenQueryリンクサーバーOracle DateAdd

このクエリの唯一の問題は、2つの日付追加行(クエリ実行が削除されている)が原因ですが、データが必要です。

私は以下のエラーが表示さ:DATEADD "?:無効な識別子

は、誰もがこれらの

ための構文を処方でした:リンクサーバー "MAGINUS" 返されたメッセージ「ORA-00904" のために OLE DBプロバイダ "MSDAORAを"事前に

おかげ

ウィル

DECLARE @TSQL VARCHAR(8000) 
    ,@CUSTOMER_ACCOUNT VARCHAR(20) 

SELECT @TSQL1 = ' 
SELECT * FROM OPENQUERY(MAGINUS,'' 
SELECT 
CM.CUSTOMER_ACCOUNT AS "CustomerAccount" 
,CM.CONTACT_NAME  AS "ContactName" 
,CM.MEMBERSHIP_NUMBER AS "MembershipNumber" 
,P.LONG_DESCRIPTION_1 AS "ProductDescription" 
,DATEADD(SECOND, CM.MEMBERSHIP_START_DATE, "19700101") AS  "MembershipStartDate" 
,DATEADD(SECOND, CM.MEMBERSHIP_EXPIRY_DATE, "19700101") AS "MemberhrshipEndDate" 
,SH.ORDER_VALUE AS "Price Paid" 
FROM MAGINUS.CUSTOMER_MEMBERSHIP CM 
INNER JOIN MAGINUS.PRODUCT P 
ON CM.PRODUCT_CODE = P.PRODUCT_CODE 
INNER JOIN MAGINUS.SALES_HEADER SH 
ON CM.CUSTOMER_ACCOUNT = SH.CUSTOMER_ACCOUNT 
AND CM.SALES_DOCUMENT_NUM = SH.SALES_DOCUMENT_NUM 
WHERE CM.CUSTOMER_ACCOUNT = ''''' + @CUSTOMER_ACCOUNT + ''''''')' 
EXEC (@TSQL1) 

答えて

0

Dateaddは、SQL Serverの有効ですが、トン彼はOracleデータベースに送信するクエリは、Oracleのために有効である必要があります。したがって、openqueryの外側でSQL Serverビットにdateaddを移動する必要があります。

DECLARE @TSQL VARCHAR(8000) 
    ,@CUSTOMER_ACCOUNT VARCHAR(20) 

SELECT @TSQL1 = ' 
SELECT CustomerAccount 
     ,ContactName 
     ,MembershipNumber 
     ,ProductDescription 
     ,DATEADD(SECOND, MembershipStartDate, ''19700101'') AS MembershipStartDate 
     ,DATEADD(SECOND, MemberhrshipEndDate, ''19700101'') AS MemberhrshipEndDate 
     ,Price Paid 
FROM OPENQUERY(MAGINUS,'' 
SELECT 
CM.CUSTOMER_ACCOUNT AS "CustomerAccount" 
,CM.CONTACT_NAME  AS "ContactName" 
,CM.MEMBERSHIP_NUMBER AS "MembershipNumber" 
,P.LONG_DESCRIPTION_1 AS "ProductDescription" 
,CM.MEMBERSHIP_START_DATE AS "MembershipStartDate" 
,CM.MEMBERSHIP_EXPIRY_DATE AS "MemberhrshipEndDate" 
,SH.ORDER_VALUE AS "Price Paid" 
FROM MAGINUS.CUSTOMER_MEMBERSHIP CM 
INNER JOIN MAGINUS.PRODUCT P 
ON CM.PRODUCT_CODE = P.PRODUCT_CODE 
INNER JOIN MAGINUS.SALES_HEADER SH 
ON CM.CUSTOMER_ACCOUNT = SH.CUSTOMER_ACCOUNT 
AND CM.SALES_DOCUMENT_NUM = SH.SALES_DOCUMENT_NUM 
WHERE CM.CUSTOMER_ACCOUNT = ''''' + @CUSTOMER_ACCOUNT + ''''''')' 
EXEC (@TSQL1) 
+0

これ以上は完璧ではありません。 – Will

関連する問題