SQL OpenQuery 链接服务器 Oracle DateAdd
SQL OpenQuery linked server Oracle DateAdd
我正在编写一个 sql 查询以从我们的一个链接的 oracle 服务器中提取一些数据。
此查询的唯一问题是两个日期添加行(删除了查询运行)但我需要它们的数据。
我收到以下错误:
链接服务器 "MAGINUS" 的 OLE DB 提供程序 "MSDAORA" 返回消息 "ORA-00904: "DATEADD": 无效标识符
任何人都可以为这些规定语法吗?
提前致谢
会
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)
Dateadd
对 SQL 服务器有效,但是您发送到 Oracle 数据库的查询需要对 oracle 有效。因此,您需要将 dateadd 移到 openquery 之外,并移至 SQL 服务器位:
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)
我正在编写一个 sql 查询以从我们的一个链接的 oracle 服务器中提取一些数据。
此查询的唯一问题是两个日期添加行(删除了查询运行)但我需要它们的数据。
我收到以下错误: 链接服务器 "MAGINUS" 的 OLE DB 提供程序 "MSDAORA" 返回消息 "ORA-00904: "DATEADD": 无效标识符
任何人都可以为这些规定语法吗?
提前致谢
会
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)
Dateadd
对 SQL 服务器有效,但是您发送到 Oracle 数据库的查询需要对 oracle 有效。因此,您需要将 dateadd 移到 openquery 之外,并移至 SQL 服务器位:
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)