在PL/SQL的LIKE条件中使用变量

0 oracle plsql

我有一个要求,我需要搜索所有记录,如'00456159 /%'.在数据库中有两个记录00456159/A和00456159/I. 但是在下面我正在使用它的代码中没有给出任何记录.有人指出我正在做的错误吗?谢谢,

SET SERVEROUTPUT ON;
DECLARE

Cursor c2(v_comp IN VARCHAR2) is select  distinct rate_agreement_nbr rag FROM APL_PRICING.rate_agreement 
WHERE  RATE_AGREEMENT_NBR like   ''''||v_comp||'%'||'''';

v_comp1 VARCHAR2(15);

BEGIN

v_comp1 :=SUBSTR('00456159/A',1,9);

For v_rec in c2(v_comP1)
loop
    DBMS_OUTPUT.PUT_LINE(v_rec.rag);
end loop;

END;
Run Code Online (Sandbox Code Playgroud)

Tho*_*jer 6

您的谓词是连接的'''',它会'在表达式的开头和结尾添加一个额外的文字引号字符().但是,您匹配的数据没有任何嵌入式引号,因此查询找不到任何匹配的行.

代替

''''||v_comp||'%'||'''';
Run Code Online (Sandbox Code Playgroud)

用这个:

v_comp||'%';
Run Code Online (Sandbox Code Playgroud)