我有一个名为BARCODE
(VARCHAR2
)列的表格;它有一条值为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(这显然是错误的)?
感谢。
答案 0 :(得分:3)
通过将变量名称更改为xx,它可以正常工作,因为查询如下所示
Select count (*) into num_line
from core.sample s
where 1=1
就像1=1
一样,条件s.barcode= barcode
对所有行都适用。如果向表中添加更多行,则会获得条件为s.barcode=barcode