使用VARCHAR2进行PLSQL搜索

时间:2015-07-01 13:25:35

标签: oracle plsql

我有一个名为BARCODEVARCHAR2)列的表格;它有一条值为CORE-BARCODE1的记录。

当我运行以下PL / SQL语句时:

declare
    num_lines INT;
begin
    SELECT COUNT (*) into num_lines
        FROM CORE.SAMPLE s
       WHERE s.barcode = 'BARCODE1';
    DBMS_OUTPUT.PUT_LINE(TO_CHAR(num_lines));
end;

正如预期的那样打印出零;但是,如果我将其修改为包含要搜索的var,如下所示:

declare
    num_lines INT;
    barcode varchar2(56);
begin
    barcode := 'BARCODE1';
    SELECT COUNT (*) into num_lines
        FROM CORE.SAMPLE s
       WHERE s.barcode = barcode;
    DBMS_OUTPUT.PUT_LINE(TO_CHAR(num_lines));
end;

打印出1,但这是错误的;为什么当我使用变量时它给我一个1(这显然是错误的)?

感谢。

1 个答案:

答案 0 :(得分:3)

通过将变量名称更改为xx,它可以正常工作,因为查询如下所示

Select count (*) into num_line
from core.sample s
where 1=1

就像1=1一样,条件s.barcode= barcode对所有行都适用。如果向表中添加更多行,则会获得条件为s.barcode=barcode

的总行数