达梦数据库存储过程的特点.docx

上传人:b****3 文档编号:2290004 上传时间:2022-10-28 格式:DOCX 页数:29 大小:24.56KB
下载 相关 举报
达梦数据库存储过程的特点.docx_第1页
第1页 / 共29页
达梦数据库存储过程的特点.docx_第2页
第2页 / 共29页
达梦数据库存储过程的特点.docx_第3页
第3页 / 共29页
达梦数据库存储过程的特点.docx_第4页
第4页 / 共29页
达梦数据库存储过程的特点.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

达梦数据库存储过程的特点.docx

《达梦数据库存储过程的特点.docx》由会员分享,可在线阅读,更多相关《达梦数据库存储过程的特点.docx(29页珍藏版)》请在冰豆网上搜索。

达梦数据库存储过程的特点.docx

达梦数据库存储过程的特点

达梦数据库存储过程的特点

达梦数据库允许用户使用系统提供的DMPL/SQL语言创建过程或函数,这些过程或函数象普通的过程或函数一样,有输入、输出参数和返回值,它们与表和视图等数据库对象一样被存储在数据库中,供用户随时调用。

存储过程和存储函数在功能上相当于客户端的一段SQL批处理程序,但是在许多方面有着后者无法比拟的优点,它为用户提供了一种高效率的编程手段,成为现代数据库系统的重要特征。

25亿网站后台管理系统将存储过程和存储函数统称为存储模块。

达梦数据库的存储模块机制是一种技术,而不是一种独立的工具,它是和服务器紧密结合在一起的。

可以认为这种技术是执行DMPL/SQL语言的一种机器,它可以接受任何有效的存储模块,按照语言本身所规定的语义执行,并将结果返回给客户。

达梦数据库的存储模块机制具有如下优点:

1.提供更高的生产率

(1)在设计应用时,围绕存储过程/函数设计应用,可以避免重复编码,提高生产率;

(2)在自顶向下设计应用时,不必关心实现的细节;

(3)编程方便。

2.便于维护

(1)用户的存储模块在数据库集中存放;

(2)用户可以随时查询、删除它们,而应用程序可以不作任何修改,或只做少量调整。

3.提供更好的性能

(1)存储模块在创建时被编译成伪码序列,在运行时不需要重新进行编译和优化处理,它具有更快的执行速度,可以同时被多个用户调用,并能够减少操作错误;如用sqlserver修改mssql2000的存储过程所有者为dbo,这些小地方还是有些麻烦的。

(2)存储模块在执行时数据对用户是不可见的,提高了数据库的安全性;

(3)存储模块具有更高的可靠性;

(4)存储模块是一种高效访问数据库的机制,网站后台管理模板使用存储模块可减少应用对DM的调用,降低了系统资源浪费,显著提高性能,尤其是在网络上与DM通讯的应用更显著。

2.1.4.3DM与Oracle存储过程对比表

操作

Oracle

DM

差异

基本语法

存储过程:

CREATE[ORREPLACE]PROCEDUREprocedure_name

[(argument[{IN|OUT|INOUT}]type,

...

argument[{IN|OUT|INOUT}]type)]{IS|AS}

procedure_body

其中procedure_name是要创建的过程名,argument是过程的参数名,type是关联参数的类型,procedure_body是构成该过程代码的PL/SQL块。

IN,OUT,和INOUT是参数的模式,如果没有为参数指定模式,则参数缺省的模式是IN。

存储函数:

CREATE[ORREPLACE]FUNCTIONfunction_name

[(argument[{IN|OUT|INOUT}]type,

...

argument[{IN|OUT|INOUT}]type)]

RETURNreturn_type{IS|AS}

function_body

其中function_name是函数的名称,参数argument和type的含义与过程相同,return_type是函数返回值的类型,function_body是包括函数体的PL/SQL块。

IN,OUT,和INOUT是参数的模式。

如果没有为参数指定模式,则参数缺省的模式是IN。

存储过程:

CREATE[ORREPLACE]PROCEDURE<存储过程名>

[(<参数名><参数模式><参数类型>{,<参数名><参数模式><参数类型>})]

AS|IS

[<说明部分>]

<执行部分>

[<异常处理部分>]

END;

存储函数:

CREATE[ORREPLACE]FUNCTION<存储函数名>

[(<参数名><参数模式><参数类型>{,<参数名><参数模式><参数类型>})]

RETURN<返回数据类型>

AS|IS

[<说明部分>]

<执行部分>

[<异常处理部分>]

END;

在存储函数中必须使用RETURN语句向函数的调用环境返回一个值。

存储函数不能用CALL语句调用,它只能出现在表达式中。

存储函数和存储过程很相似,它们的区别在于:

1.存储过程没有返回值,而存储函数有;

2.存储过程中可以没有返回语句,而存储函数必须通过返回语句结束;

3.存储过程的返回语句中不能带表达式,而存储函数必须带表达式;

4.存储过程不能出现在一个表达式中,而存储函数只能出现在表达式中。

创建存储过程

CREATE[ORREPLACE]PROCEDURE<存储过程名定义>

[(<参数名><参数模式><参数类型>[<默认值表达式>]

{,<参数名><参数模式><参数类型>[<默认值表达式>]})]

[WITHENCRYPTION]AS|IS

[<说明部分>]

BEGIN

<执行部分>

[<异常处理部分>]

END;

CREATE[ORREPLACE]PROCEDURE<存储过程名定义>

[(<参数名><参数模式><参数类型>[<默认值表达式>]

{,<参数名><参数模式><参数类型>[<默认值表达式>]})]

[WITHENCRYPTION]AS|IS

[<说明部分>]

BEGIN

<执行部分>

[<异常处理部分>]

END;

撤销存储过程

DROPPROCEDURE<存储过程名>;

DROPPROCEDURE<存储过程名>;

调用存储过程

CALL<存储过程名>[(<参数>{,<参数>})];

1.CALL<存储过程名>[(<参数>{,<参数>})];

2.EXEC<存储过程名>[(<参数>{,<参数>})];

3.<存储过程名>[(<参数>{,<参数>})];

DM支持多种调用方式

创建存储函数

CREATE[ORREPLACE]FUNCTION<存储函数名定义>

[(<参数名><参数模式><参数类型>[<默认值表达式>]

{,<参数名><参数模式><参数类型>[<默认值表达式>]})]

RETURN<返回数据类型>

[WITHENCRYPTION]AS|IS

[<说明部分>]

BEGIN

<执行部分>

[<异常处理部分>]

END;

CREATE[ORREPLACE]FUNCTION<存储函数名定义>

[(<参数名><参数模式><参数类型>[<默认值表达式>]

{,<参数名><参数模式><参数类型>[<默认值表达式>]})]

RETURN<返回数据类型>

[WITHENCRYPTION]AS|IS

[<说明部分>]

BEGIN

<执行部分>

[<异常处理部分>]

END;

撤销存储函数

DROPFUNCTION<存储函数名>;

DROPFUNCTION<存储函数名>;

调用存储函数

SELECT<存储函数名>[(<参数>{,<参数>})];

SELECT<存储函数名>[(<参数>{,<参数>})];

PLSQL支持的结构

1.顺序结构;

2.分支结构,包括条件、循环结构等;

3.迭代结构,包括子过程、子函数的调用。

1.顺序结构;

2.分支结构,包括条件、循环结构等;

3.迭代结构,包括子过程、子函数的调用。

语句块结构

DECLARE

...

BEGIN

...

EXCEPTION

...

END;

语法格式:

[{DECLARE<变量说明>;}]

BEGIN

<执行部分>

[<异常处理部分>]

END

DMPL/SQL基本的程序单元;一个语句可以当作一个整体SQL语句对待,允许嵌套,可出现在SQL语句能出现的任何地方。

赋值语句

variable:

=expression;

给对象赋值;

语法格式:

1.<赋值对象>:

=<值表达式>

2.SET<赋值对象>=<值表达式>

需要注意的是,使用第2种形式时,不需要冒号“:

”。

DM支持多种赋值方式

变量定义

variabledata_type

[:

=|DEFAULT]default_value;

1.在语句块的说明部分可以定义变量、游标、异常变量、子过程或子函数;

2.需要强调的一点是,一个语句块意味着一个作用域范围,也就是说,在一个语句块的说明部分定义的任何对象,其作用域就是该语句块;

3.暂不支持缺省值的定义。

ORACLE支持缺省值;

DM不支持缺省值;

返回语句

RETURN;

RETURN<结果值>;

RETURN;

RETURN<结果值>;

1.结束存储模块的运行,将控制返回给调用者;

2.如果从函数返回,同时返回函数的结果。

退出循环

EXIT[WHENcondition];

EXIT[WHENcondition];

1.EXIT与循环语句一起使用,用于终止循环语句的执行,将控制转移到循环语句的下一个语句;

2.可以无条件终止循环语句;

3.可以带条件终止循环语句,当检测条件满足时才执行EXIT语句。

IF语句

IFTHEN

[ELSIF

]

[ELSIF

]

[ELSE

]

ENDIF;

根据布尔表达式的值,进行程序的分支控制;

语法格式:

IF<条件表达式>THEN

<执行部分>;

[{ELSEIF|ELSIF<条件表达式>THEN

<执行部分>;}]

[ELSE<执行部分>;]

ENDIF;

注意:

ELSEIF与ELSIF两种写法。

DM支持两种语法标记

循环语句

1.WHILE

WHILELOOP

;

[;]...

ENDLOOP;

2.LOOP

[<

LOOP

statements

ENDLOOP[label];

2FOR

FOR循环计数器IN[REVERSE]下限..上限LOOP

要执行的语句;

ENDLOOP;

5.FOR_QUERY

FORloop_nameINLOOP

;

[;]…

ENDLOOP;

1.LOOP:

循环执行,直至EXIT语句终止;

CREATEORREPLACEPROCUDUREP2

AS

AINT;

BEGIN

A:

=0;

LOOP

IFA>10THEN

EXIT;

ELSE

A:

=A+1;

ENDIF;

ENDLOOP;

END;

2.WHILE:

循环检测执行条件,为TRUE时执行,否则退出;

CREATEORREPLACEPROCEDUREP3

AS

DECLARE

AINT;

BEGIN

A:

=10;

WHILEA>0LOOP

A:

=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1