使用CLOB和IN? ORACLE

时间:2017-09-26 22:08:51

标签: oracle

我正在尝试使用IN执行此查询,但如果类型为CLOB则不起作用。 我需要参数p_rut是CLOB和我需要使用IN的查询,因为它会返回更多行来进行比较。 如何在IN?

中使用参数CLOB
PROCEDURE INSERT_TEST (o_dat out o_cursor, p_rut in CLOB)
AS
BEGIN

OPEN o_dat FOR     

select * from cliente
        where rut in (p_rut);

END;

表CLIENTE

CREATE TABLE CLIENTE
(
    PRODUCTO      VARCHAR(50),
    RUT           VARCHAR2(50),
    DV            VARCHAR2(50),
    FONO1         VARCHAR2(50),
    FONO2         VARCHAR2(50),
    FONO3         VARCHAR2(50),
    FONO4         VARCHAR2(50),
    FONO5         VARCHAR2(50),
    FONO6         VARCHAR2(50),             
    COMUNA        VARCHAR2(50),
    EDAD          NUMBER(8),
    SEXO          NUMBER(8),
    DIASMORA      NUMBER(8),
    AÑODEUDA      NUMBER(8),
    PAGOMINIMO    NUMBER(8),
)
;

2 个答案:

答案 0 :(得分:0)

您可以使用:

DBMS_LOB.INSTR (
   lob_loc    IN   CLOB      CHARACTER SET ANY_CS,
   pattern    IN   VARCHAR2  CHARACTER SET lob_loc%CHARSET,
   offset     IN   INTEGER := 1,
   nth        IN   INTEGER := 1)
  RETURN INTEGER;

PROCEDURE INSERT_TEST (o_dat out o_cursor, p_rut in CLOB)
AS
BEGIN

OPEN o_dat FOR     

select * from cliente
        where  DBMS_LOB.INSTR (p_rut,rut)>0;

END;

答案 1 :(得分:0)

使用IN它不能使用CLOB,所以我只是对varchar2进行了CAST。

select * from cliente
        where rut in (CAST (p_rut AS VARCHAR2(100));