技术开发 频道

专家点评:达梦6.0试用之PLSQL篇

  这时Oracle中计算100以内质数的一个PL/SQL过程,可以看到,除了调用DBMS_OUTPUT包之外,其他部分不用进行任何的修改就可以顺利执行,在达梦的PL/SQL语句中,提供了PRINT语句来代替DBMS_OUTPUT包:

SQL>DECLARE
2       V_FLAG BOOLEAN;
3   BEGIN
4       FOR I IN 2 .. 100 LOOP
5               V_FLAG := TRUE;
6               FOR J IN 2 .. TRUNC(POWER(I, 0.5)) LOOP
7                       IF MOD(I,J) = 0 THEN
8                               V_FLAG := FALSE;
9                               EXIT;
10                      END IF;
11              END LOOP;
12
13              IF V_FLAG = TRUE THEN
14                      PRINT(I);
15              END IF;
16      END LOOP;
17  END;
18  /
DECLARE
        V_FLAG BOOLEAN;
BEGIN
        
FOR I IN 2 .. 100 LOOP
                V_FLAG :
= TRUE;
                
FOR J IN 2 .. TRUNC(POWER(I, 0.5)) LOOP
                        
IF MOD(I,J) = 0 THEN
                                V_FLAG :
= FALSE;
                                
EXIT;
                        
END IF;
                
END LOOP;
                
IF V_FLAG = TRUE THEN
                        
PRINT(I);
                
END IF;
        
END LOOP;
END;
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
0 rows affected
time used:
29.325(ms) clock tick:48929860.

  除了匿名块外,达梦还支持PROCEDURE、FUNCTION和TRIGGER:

SQL>CREATE OR REPLACE PROCEDURE P_TEST AS
2   BEGIN
3   INSERT INTO T VALUES (1, 'TEST', SYSDATE);
4   COMMIT;
5   END;
6   /
CREATE OR REPLACE PROCEDURE P_TEST AS
BEGIN
INSERT INTO T VALUES (1, 'TEST', SYSDATE);
COMMIT;
END;
time used:
41.239(ms) clock tick:68574010.
SQL
>SELECT * FROM T;
SELECT * FROM T;
id              name            create_date
0 rows got
time used:
0.319(ms) clock tick:520320.
SQL
>BEGIN
2   P_TEST;
3   END;
4   /
BEGIN
P_TEST;
END;
1 rows affected
time used:
11.769(ms) clock tick:19487570.
SQL
>SELECT * FROM T;
SELECT * FROM T;
id              name            create_date
1       1       TEST    2010-04-07
1 rows got
time used:
0.295(ms) clock tick:477140.
0
相关文章