使用declare在Oracle中声明局部变量
在MS SQL和Sybase中,我们将查询计数分配给变量,如下所示使用declare在Oracle中声明局部变量,oracle,loops,plsql,Oracle,Loops,Plsql,在MS SQL和Sybase中,我们将查询计数分配给变量,如下所示 declare @rate_count int select count(1) "Count" = @rate_count from (select DISTINCT RATE_CODE from APPROVED_RATE RATE where RATE.RATE_CHNG_IND = 'Y') 然而,在甲骨文中,我甚至不能声明?有什么帮助吗 因为取决于返回的值,而循环开始时 while (@rate_count &
declare @rate_count int
select count(1) "Count" = @rate_count
from
(select DISTINCT RATE_CODE from APPROVED_RATE RATE
where RATE.RATE_CHNG_IND = 'Y')
然而,在甲骨文中,我甚至不能声明?有什么帮助吗
因为取决于返回的值,而循环开始时
while (@rate_count > 1)
Begin
--
End
你当然可以申报
Declare
rate_count number;
begin
select count(1) into rate_count
from
(select DISTINCT RATE_CODE from APPROVED_RATE RATE
where RATE.RATE_CHNG_IND = 'Y');
dmbs_output.put_line(rate_count);
end;
在Oracle中,您可以像以下一样使用:
SQL> set serveroutput on;
SQL> declare
rate_count int;
begin
select count(1) "Count" into rate_count from (select DISTINCT RATE_CODE from APPROVED_RATE RATE where RATE.RATE_CHNG_IND = 'Y');
dbms_output.put_line('Your Rate Count is : '||rate_count);
end;
Oracle不允许我们在块的declare部分执行SQL语句。因此,您需要做的是:
declare
rate_count pls_integer;
begin
select count(DISTINCT RATE_CODE)
into rate_count
from APPROVED_RATE RATE
where RATE.RATE_CHNG_IND = 'Y';
while rate_count > 1 loop
....
这段时间要小心。除非你减少计数或有其他退出条件,否则代码将永远循环。也许你的意思是:
for idx in 1 .. rate_count loop