达梦数据库与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.
来源:CSDN
作者:梁敬彬
链接:https://blog.csdn.net/weixin_39534833/article/details/103497325