从 SQL 服务器对 Oracle 数据库执行存储过程时出现问题
Issue with executing stored procedure against Oracle database from SQL Server
我有以下代码,它针对 Oracle 数据库运行开放式查询。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[DHLDeliveries]
AS
BEGIN
SET NOCOUNT ON;
SELECT *
INTO #DHLDeliveries
FROM openquery([MaginusOMS],
'Select
TO_DATE(TO_CHAR(TO_DATE(''19700101'',''yyyymmdd'') + + (FLOOR(ph.change_date/24/60/60)))) as date1,
pro.tariff_code as ItemHScode,
''1000001'' AS ProcedureCode,
pro.long_description_1 as ItemDescription,
ph.weight + 0.2 as GrossWeight,
ph.weight as NetWeight,
Si.net_price as ItemUnitPrice,
pro.product_code as ItemSKU,
si.despatched_qty as ItemQuantity
from
despatch_header dc
left join additional_charge ac on dc.despatch_num = ac.despatch_num
left join sales_header sh on ac.sales_document_num = sh.sales_document_num and ac.order_type = sh.order_type
inner join sales_item si on sh.sales_document_num = si.sales_document_num
left join package_header ph on dc.despatch_num = ph.despatch_num
left join product pro on si.product_code = pro.product_code
where ph.carrier_code in (''DHLGBL'',''DHLPKT'') and ph.change_date =''07-NOV-2020''
');
SELECT *
FROM #DHLDeliveries
DROP TABLE #DHLDeliveries
END
但是当我执行它时,我得到这个错误...
OLE DB provider "OraOLEDB.Oracle" for linked server "MaginusOMS"
returned message
ORA-01722: invalid number". OLE DB provider "OraOLEDB.Oracle" for linked server "MaginusOMS" returned message
"ORA-01722: invalid number".
Msg 7320, Level 16, State 2, Procedure dbo.DHLDeliveries, Line 16 [Batch Start Line 2]
Cannot execute the query
感谢任何帮助。
错误是由于在查询中使用不正确的语法导致类型不匹配。
我有以下代码,它针对 Oracle 数据库运行开放式查询。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[DHLDeliveries]
AS
BEGIN
SET NOCOUNT ON;
SELECT *
INTO #DHLDeliveries
FROM openquery([MaginusOMS],
'Select
TO_DATE(TO_CHAR(TO_DATE(''19700101'',''yyyymmdd'') + + (FLOOR(ph.change_date/24/60/60)))) as date1,
pro.tariff_code as ItemHScode,
''1000001'' AS ProcedureCode,
pro.long_description_1 as ItemDescription,
ph.weight + 0.2 as GrossWeight,
ph.weight as NetWeight,
Si.net_price as ItemUnitPrice,
pro.product_code as ItemSKU,
si.despatched_qty as ItemQuantity
from
despatch_header dc
left join additional_charge ac on dc.despatch_num = ac.despatch_num
left join sales_header sh on ac.sales_document_num = sh.sales_document_num and ac.order_type = sh.order_type
inner join sales_item si on sh.sales_document_num = si.sales_document_num
left join package_header ph on dc.despatch_num = ph.despatch_num
left join product pro on si.product_code = pro.product_code
where ph.carrier_code in (''DHLGBL'',''DHLPKT'') and ph.change_date =''07-NOV-2020''
');
SELECT *
FROM #DHLDeliveries
DROP TABLE #DHLDeliveries
END
但是当我执行它时,我得到这个错误...
OLE DB provider "OraOLEDB.Oracle" for linked server "MaginusOMS" returned message
ORA-01722: invalid number". OLE DB provider "OraOLEDB.Oracle" for linked server "MaginusOMS" returned message
"ORA-01722: invalid number".Msg 7320, Level 16, State 2, Procedure dbo.DHLDeliveries, Line 16 [Batch Start Line 2]
Cannot execute the query
感谢任何帮助。
错误是由于在查询中使用不正确的语法导致类型不匹配。