2017-07-18 56 views
-1

这里是我的程序代码段。 ** Context_value是的Clob ** ORDER_ID为int遇到错误(11,5):PL/SQL:ORA-00932:不一致的数据类型:预期数量得到CLOB

create or replace PACKAGE BODY UPDATE_RECORD AS 

Procedure updateRecord(orderId IN ORDER_CONTEXT.ORDER_ID%TYPE 
) IS 


    BEGIN 



    update ORDER_CONTEXT 
    set context_value= (
    select to_clob(replace((context_value).getClobVal(),'xyz','abc')) 
    from ORDER_CONTEXT where CONTEXT_NAME='IEOD' and ORDER_ID=orderId 
) 
    where CONTEXT_NAME='IEOD' and ORDER_ID=orderId ; 

    COMMIT; 
    END updateRecord; 

END UPDATE_RECORD; 

错误是 错误(11,5):PL/SQL:SQL语句忽略 错误(11,5):PL/SQL:ORA- 00932:不一致的数据类型:预期数量得到CLOB

+0

什么数据类型是order_Context中的context_value?和order_ID在order_Context中?并且被传递什么价值为updateRecord.orderID – xQbert

+0

context_value是CLOB,ORDER_ID为int –

回答

2

必须使用XMLTYPE()投你context_value的数据类型XMLTYPE如图所示。

CREATE OR REPLACE PACKAGE BODY UPDATE_RECORD 
AS 
PROCEDURE updateRecord(
    orderId IN ORDER_CONTEXT.ORDER_ID%TYPE) 
IS 
BEGIN 
    UPDATE ORDER_CONTEXT 
    SET context_value= 
    (SELECT to_clob(REPLACE((XMLTYPE('<root>' 
     ||context_value 
     ||'</root>')).getClobVal(),'xyz','abc')) 
    FROM ORDER_CONTEXT 
    WHERE CONTEXT_NAME='IEOD' 
    AND ORDER_ID  =orderId 
    ) 
    WHERE CONTEXT_NAME='IEOD' 
    AND ORDER_ID  =orderId ; 
    COMMIT; 
END updateRecord; 
END UPDATE_RECORD; 
/
相关问题