我有一个非常简单的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.为什么??
答案 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;