我正在尝试将变量(“COUNT”)定义为查询的计数,以便我可以在稍后的PLSQL块中的条件语句中使用它。我使用以下语法得到计数:
Select count(value_tx) from value where trunc(date) = trunc(sysdate)
我目前知道如何执行此操作的唯一方法是使用游标。有一个更好的方法吗?我使用游标的方法如下:
Create or Replace Procedure TEST IS
CURSOR C1 is
select count(value_tx) as COUNTE
from value
where trunc(date) = trunc(sysdate)
group by hr_utc;
l_var c1%ROWTYPE;
BEGIN
Open c1;
FETCH c1 into l_var;
IF l_var.counte > 0 THEN DBMS_OUTPUT.PUT_LINE(l_var.COUNTE);
END IF;
Close c1;
END TEST;
提前感谢。
答案 0 :(得分:1)
有更好的方法吗?
当然可以。
问题是这种情况:where trunc(date) = ....
。这可以防止RDBMS在date
列上使用索引。如果表很大,这可能会导致性能问题。我不打算解释原因,您可以在其他地方找到解释,例如:Why do functions on columns prevent the use of indexes?
您需要将此条件替换为:
`where date >= trunc(sysdate) AND date < trunc(sysdate) + 1
或
where date >= trunc(sysdate) AND date < trunc(sysdate) + interval '1' day