2015-06-17 14 views
2

编写PLSQL块以显示给定编号中的奇数和总奇数?例如:如果给定的数字是3,显示如下图1是奇数3是奇数共2个奇数3“For循环”中的迭代计数Oracle PL/SQL

CREATE OR REPLACE PROCEDURE odd_num(p_num NUMBER) 
    IS s_num NUMBER; 
BEGIN 
    FOR i_num IN 1..p_num 
     LOOP 
     IF mod(i_num,2) = 1 
     THEN  
      dbms_output.put_line(i_num ||' is Odd Number'); 
     END IF; 
     END LOOP; 
    dbms_output.put_line('Total '|| s_num ||' Odd Numbers in '||p_num); 
END; 
+0

问题是什么?看起来你想要初始化's_num',然后在循环中的'if'语句中增加它。 –

回答

2

你只需要初始化和分配计数器s_num。只需添加IF块内的以下内容:

s_num := s_num +1; 

例如,

SQL> CREATE OR REPLACE PROCEDURE odd_num(p_num NUMBER) 
    2 IS 
    3 s_num NUMBER; 
    4 BEGIN 
    5  s_num :=0; 
    6  FOR i_num IN 1..p_num 
    7  LOOP 
    8   IF mod(i_num,2) = 1 
    9   THEN 
10    -- Increment the counter once for each iteration 
11    s_num := s_num +1; 
12    dbms_output.put_line(i_num ||' is Odd Number'); 
13   END IF; 
14  END LOOP; 
15  dbms_output.put_line('Total '|| s_num ||' Odd Numbers in '||p_num); 
16 END; 
17/

Procedure created. 

SQL> sho err 
No errors. 

让我们执行程序

SQL> SET SERVEROUTPUT ON 
SQL> EXEC odd_num(5); 
1 is Odd Number 
3 is Odd Number 
5 is Odd Number 
Total 3 Odd Numbers in 5 

PL/SQL procedure successfully completed. 

SQL> 
+0

我希望得到像“5中总共3个奇数”的答案。 –

+0

@PrabhaChrist欢迎来到Stack Overflow。我知道,我更新了。有一个愚蠢的错字,我在IF之前在循环中加入了计数器,它应该在IF块内。请将其标记为已回答。 –

+0

非常感谢:) –