여러 SELECT 문으로 CAPTURED_DATA_01 테이블에 삽입하려고합니다. EVENT_ID, ENV_ID, BRAND_ID, BP_ID 값을 삽입 할 수 있지만 이제는 SUBSCRIPTION_ID 값은 원격 테이블에있는 select 문을 사용하여 얻을 것이다. 쿼리를 테스트하고 SUBSCRIPTION_ID 점점 얻으려면 제대로 실행됩니다. 하지만 난 후 나는 여기있다ORA-22992 원격 테이블 문제에서 LOB에 대한 참조를 제거합니다.
SQL Error: ORA-22992: cannot use LOB locators selected from remote tables
22992. 00000 - "cannot use LOB locators selected from remote tables"
*Cause: A remote LOB column cannot be referenced.
*Action: Remove references to LOBs in remote tables
로 내 하위 쿼리 내부의 SUBSCRIPTION_ID 캐스트 기능을 사용 한 오류를 얻고 내 삽입 쿼리 내부에 SUBSCRIPTION_ID의 값을 삽입하기 위해이 선택 문을 사용하려고 할 때 내 쿼리 :
Insert into CAPTURED_DATA_01(SUBSCRIPTION_ID)
select WF.SUBSCRIPTION_ID
from
(select WF.SUBSCRIPTION_ID from [email protected]_RETAIL WF,CAPTURED_DATA_01 CP
where WF.SUBSCRIPTION_ID > CP.SUBSCRIPTION_ID and
WF.SUBSCRIPTION_ID IN
(
select iw.SUBSCRIPTION_ID
from (
SELECT TO_NUMBER(REPLACE(REPLACE(REGEXP_SUBSTR(RESPONSE_XML, '<ax2147:subscriptions xsi:type="ax2127:SubscriptionDTO"><ax2130:id>\d+</ax2130:id>'),
'<ax2147:subscriptions xsi:type="ax2127:SubscriptionDTO"><ax2130:id>', ''), '</ax2130:id>', ''))
AS SUBSCRIPTION_ID ,
CAST(REPLACE(REPLACE(
REGEXP_SUBSTR(REQUEST_XML, '<ns7:orderType>.+</ns7:orderType>'),
'<ns7:orderType>', ''), '</ns7:orderType>', '')
AS VARCHAR(100)) AS order_type,
TO_NUMBER(REPLACE(REPLACE(REGEXP_SUBSTR(RESPONSE_XML, '<ax2147:orderNumber>\d+</ax2147:orderNumber> '),
'<ax2147:orderNumber>', ''), '</ax2147:orderNumber> ', ''))
AS ORDER_NUMBER,
CREATE_DATE
FROM
[email protected]_RETAIL
where WEB_SERVICE_NAME='RatorWebShopService' and WEB_METHOD_NAME='placeShopOrder'
) iw
where iw.order_type='SELF_REGISTRATION'
)and WF.NAME='INITIATE_MANDATE'
and WF.STATUS_ID=0)
단지 작은 문제가이 문 TO_NUMBER에 있습니다 (REPLACE ((REGEXP_SUBSTR (RESPONSE_XML, REPLACE '<: 구독 XSI : 유형 = ax2147 "ax2127 : SubscriptionDTO">을 \ D + ') 내가 오류를 얻고 여기서 (이 오류를 검색 할 수있는 문서가 없습니다.) '', '),' ',)')) AS SUBSCRIPTION_ID –
Andrew
문제는 삽입이 항상 로컬에서 처리되므로 LOB 열에서 substr 등을 원격 선택으로 수행하지 않는다는 것입니다. drive_site 힌트를 사용하여 동작을 변경할 수 있지만 힌트는 내가 아는 한 삽입을 위해 무시됩니다. PL/S에서 커서를 쿼리해야 할 수도 있습니다 QL 블록과 (벌크) 인서트. –
ohh ok 나는 PL/SQL 환경이 좋지 않지만이 경우 커서를 사용해보십시오. 이 선택 쿼리에 대한 커서 예제가 있습니까? – Andrew