达梦数据库的包与过程函数的测试

若如初见. 提交于 2019-12-11 22:46:49

达梦数据库与Oracle的兼容性总体来说还是不错的,下面我们来一起探索一下包过程函数的基本功能的实现与一些注意点。

匿名块
结构:
匿名块
Declare (可选项,申请变量)
Begin –开始
Boby;
Exception (可选项,异常处理)
End;

来一个hello world
SQL> set serveroutput on
SQL> begin
2 print(‘hello world’);
3 end;
4 /
hello world

DMSQL 过程已成功完成

已用时间: 0.630(毫秒). 执行号:372.

带参数的过程包

案例:根据员工的编号找出员工所在的部门?
Create or replace procedure ljb.p_emp(BH IN INT)
AS
Dept INT;
BEGIN
Select department_id into dept from employees where employee_id=bh;
Print(dept);
END;
/

SQL> select employee_id from employees;

行号 EMPLOYEE_ID


1 1
2 2
3 3

已用时间: 0.417(毫秒). 执行号:376.
SQL> select department_id from departments;

行号 DEPARTMENT_ID


1 1
2 2
3 3

可以用call调用

SQL> call p_emp(1);

1

DMSQL 过程已成功完成

SQL> select user();

行号 USER()


1 LJB

CREATE OR REPLACE PACKAGE dm_pkg1 as
Procedure p_emp (BH INT);
End dm_pkg1 ;

/

包头

SQL> CREATE OR REPLACE PACKAGE dm_pkg1 as

2 Procedure p_emp (BH INT);

3 End dm_pkg1 ;

4 /

操作已执行

已用时间: 4.342(毫秒). 执行号:379.

包体

SQL> CREATE OR REPLACE PACKAGE BODY dm_pkg1 as

2 procedure p_emp(BH IN INT)
3 AS
4 DECLARE
5 Dept INT;
6 BEGIN
7 Select department_id into dept from employees where employee_id=bh;
8 Print(dept);
9 END;
10 End dm_pkg1;

11 /

操作已执行

已用时间: 5.011(毫秒). 执行号:380.

调用

SQL> call dm_pkg1.p_emp(1);

1

DMSQL 过程已成功完成

已用时间: 0.646(毫秒). 执行号:381.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!