Oracle神秘与过滤数字查询

时间:2016-04-08 16:15:06

标签: sql oracle oracle11g

我有一个非常简单的SQL,我无法工作......

DECLARE
 RESTORE_ID NUMBER;
 counts NUMBER;
BEGIN
RESTORE_ID := 100014;
SELECT COUNT(UPDATE_ID) INTO counts FROM TB_ENT WHERE UPDATE_ID = RESTORE_ID;
DBMS_OUTPUT.PUT_LINE(counts);
END;

如果我运行上述操作,输出为0。

如果我在没有RESTORE_ID变量的情况下运行它而将SELECT行替换为:

SELECT COUNT(UPDATE_ID) INTO counts FROM TB_ENT WHERE UPDATE_ID = 100014;

你猜对了,输出是1.为什么??

1 个答案:

答案 0 :(得分:4)

您应该避免使用变量的列名。这是您重写的代码。我也喜欢表的别名,因为我觉得它可以缩短连接的查询次数。

DECLARE
 vRESTORE_ID NUMBER;
 vcounts NUMBER;
BEGIN
vRESTORE_ID := 100014;
SELECT COUNT(te.UPDATE_ID) 
INTO vcounts 
FROM TB_ENT te 
WHERE te.UPDATE_ID = vRESTORE_ID;
DBMS_OUTPUT.PUT_LINE(vcounts);
END;