10: 编写一个算命的过程,接收输入的一个生日(yyyymmdd),每2位相加取个位,最后得到一位数字,此数字为偶数(命好),为质数(一般),否则为(命运悲惨).算法如下;
19850324
0735356
708881
78669
5425
967
53
8 -------------------偶数,命好
19850324
0735356
708881
78669
5425
967
53
8 -------------------偶数,命好
解决方案 »
- 数据库中的must表是什么表?
- ORACLE如何批量插入数据?
- Oracle使用问题!
- Oracle Database Express Edition 11g Release 2 支持windows 8 X64位操作系统吗?
- SQl语句的查询问题
- 怎么样看优化??
- Instance与database之概念疑问
- 不相关的两个表数据怎样合在一起?
- 请教oracle问题,急,在线等!
- 关于spool 的set linesize的问题
- 在eclipse中连接oracle怎么老是报“The Network Adapter could not establish the connection”
- ORACLE 存储过程问题,高分求教
2 s VARCHAR2(8);
3 o VARCHAR2(8);
4 PROCEDURE cc(num VARCHAR2, s OUT VARCHAR2) IS
5 BEGIN
6 FOR i IN REVERSE 2 .. length(num) LOOP
7 s := s || substr(substr(num, i, 1) + substr(num, i - 1, 1), -1);
8 END LOOP;
9 SELECT REVERSE(s) INTO s FROM dual;
10 END;
11 BEGIN
12 o := i_birth;
13 LOOP
14 cc(o, s);
15 o := s;
16 dbms_output.put_line(s);
17 EXIT WHEN length(o) < 2;
18 END LOOP;
19 END;
20 /
Procedure created
SQL> set serveroutput on;
SQL> exec calc('19850324');
0735356
708881
78669
5425
967
53
8
PL/SQL procedure successfully completed
SQL>
(select '19850324' x from dual)select case when mod (i, 2) = 0 then '命好' when i = 9 then '命运悲惨' else '一般' end result
from (select mod(sum((to_number(substr(x, level, 1)) +
to_number(substr(x, -level, 1))) *
greatest(((level - 1) * 2 - 1) * 7, 1)),
10) i
from t
connect by level <= 4);