我正在尝试使用IN执行此查询,但如果类型为CLOB则不起作用。 我需要参数p_rut是CLOB和我需要使用IN的查询,因为它会返回更多行来进行比较。 如何在IN?
中使用参数CLOBPROCEDURE 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),
)
;
答案 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));