达梦数据库简单存储过程
一、存储过程概述
存储过程数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升
语法
CREATE [OR REPLACE ] PROCEDURE<过程声明><AS_OR_IS><模块体>
<过程声明> ::= <存储过程名定义> [WITH ENCRYPTION][(<参数名><参数模式><参数类型> [<默认值表达式>] {,<参数名><参数模式><参数类型> [<默认值表达式>] })][<调用权限子句>]
<存储过程名定义> ::=[<模式名>.]<存储过程名>
<AS_OR_IS>::= AS | IS
<模块体> ::= [<声明部分>]
BEGIN
<执行部分>
[<异常处理部分>]
END
[存储过程名]
<声明部分> ::=[DECLARE]<声明定义>{<声明定义>}
<声明定义>::=<变量声明>|<异常变量声明>|<游标定义>|<子过程定义>|<子函数定义>;
<执行部分>::=<DMSQL程序语句序列>{;<DMSQL程序语句序列>}
<DMSQL程序语句序列> ::= [<标号说明>]<DMSQL程序语句>; <标号说明>::=<<<标号名>>>
<DMSQL程序语句>::=<SQL语句>|<控制语句>
<异常处理部分>::=EXCEPTION<异常处理语句>{;<异常处理语句>}
注
可执行部分是存储过程的核心部分,由SQL语句和流控制语句构成。支持的SQL语句包括:
数据查询语句(**SELECT**)
数据操纵语句(**INSERT**、**DELETE**、**UPDATE**)
游标定义及操纵语句(**DECLARE CURSOR**、**OPEN**、**FETCH**、**CLOSE**)
事务控制语句(**COMMIT**、**ROLLBACK**)
动态SQL执行语句(**EXECUTE IMMEDIATE**)
SQL语句必须以分号结尾,否则语法分析报错。
二、达梦数据库简单存储过程编写
首先我们先在一个模式名下创建存储过程,最好不要在SYSDBA模式下创建
编写存储过程
使用DM8初始化创建的数据库实例里面的JOB表
然后我们编辑存储过程,设置变量,将sql进行修改,给变量赋值,并将条件设置为输入变量,并最终进行出参打印出来
as后为我们设置的出参变量,变量名+变量数据类型,用分号隔开
查询的指定列名into出参,按查询顺序依次赋值
条件为入参A
最终打印B1B2B3,并用||分割显示
AS
B1 VARCHAR;B2 INT;B3 INT ;
BEGIN
/*执行体*/
SELECT
JOB_ID,
MIN_SALARY,
MAX_SALARY INTO B1,B2,B3
FROM DMHR.JOB
WHERE JOB_TITLE=A;
print('ID='||B1||' 最低工资:'||B2||' 最高工资:'||B3);
END;
点击确定保存结束后,我们在查询语句中,调用存储过程,查看是否正确显示
这里因为我们设置的入参变量为varchar类型,如果设置的为int型,则不需要用引号,但是入参必须和相应的列名数据类型相同,否则会出错
调用存储过程
CALL DMHR.T1('总经理助理')