当前位置: 首页 > news >正文

网站开发课程网上书城网站开发方案

网站开发课程,网上书城网站开发方案,广东网站开发项目,网站添加模块MogDB/openGauss 关于 PL/SQL 匿名块调用测试 一、原理介绍 PL/SQL(Procedure Language/Structure Query Language)是标准 SQL 语言添加了过程化功能的一门程序设计语言。 单一的 SQL 语句只能进行数据操作#xff0c;没有流程控制#xff0c;无法开发复杂的应用。PL/SQL …MogDB/openGauss 关于 PL/SQL 匿名块调用测试 一、原理介绍 PL/SQL(Procedure Language/Structure Query Language)是标准 SQL 语言添加了过程化功能的一门程序设计语言。 单一的 SQL 语句只能进行数据操作没有流程控制无法开发复杂的应用。PL/SQL 语言是结合了结构化查询与数据库自身过程控制为一体的强大语言。 1.PL/SQL 原理 PL/SQL 是一种块结构的语言它将一组语句放在一个块中一次性发送给服务器。 PL/SQL 引擎分析收到 PL/SQL 语句块中的内容把其中的过程控制语句由 PL/SQL 引擎自身去执行,把 PL/SQL 块中的 SQL 语句交给服务器的 SQL 语句执行器执行。 PL/SQL 块发送给服务器后先被编译然后执行对于有名称的 PL/SQL 块如子程序可以单独编译永久的存储在数据库中随时准备执行。 PL/SQL 是一种块结构的语言一个 PL/SQL 程序包含了一个或者多个逻辑块逻辑块中可以声明变量变量在使用之前必须先声明。 2.PL/SQL 特点 –与 SQL 紧密结合 –支持面向对象编程 –更好的性能 –可移植性 –安全性 3.语法结构 除了正常的执行程序外PL/SQL 还提供了专门的异常处理部分进行异常处理 [DECLARE--declaration statements] ① BEGIN--executable statements ② [EXCEPTION--exception statements] ③ END;语法解析 ① 声明部分声明部分包含了变量和常量的定义。在此声明 PL/SQL 用到的变量,类型及游标以及局部的存储过程和函数 这个部分由关键字 DECLARE 开始如果不声明变量或者常量可以省略这部分。 ② 执行部分执行部分是 PL/SQL 块的指令部分由关键字 BEGIN 开始关键字 END 结尾。 所有的可执行 PL/SQL 语句都放在这一部分该部分执行命令并操作变量。其他的 PL/SQL 块可以作为子块嵌套在该部分。 PL/SQL 块的执行部分是必选的。注意 END 关键字后面用分号结尾。 ③ 异常处理部分该部分是可选的该部分用 EXCEPTION 关键字把可执行部分分成两个小部分之前的程序是正常运行的程序 一旦出现异常就跳转到异常部分执行。 4.PL/SQL 语句块的类型 1、匿名块 2、命名块 –①procedure 存储过程 –②function 函数 –③package 包 –④trigger 触发器 原本大家可能一提到 PL/SQL 就会想到 ORACLEORACLE 的 PL/SQL 很强大它的匿名块调用以及有名块调用可以解决很多问题在 MOGDB/openGauss 中其实也有这样的功能如下是我针对 MOGDB/openGauss 匿名块的一些测试。 二、匿名块测试 1.普通匿名块调用 openGauss# create table t1(a int ,b text); CREATE TABLEopenGauss# DECLARE openGauss-# PRAGMA AUTONOMOUS_TRANSACTION; openGauss-# BEGIN openGauss$# raise notice Normal anonymous block printing.; openGauss$# insert into t1 values(1,I am lmj!); openGauss$# END; openGauss$# / NOTICE: Normal anonymous block printing.ANONYMOUS BLOCK EXECUTE openGauss# select * from t1;a | b --------------1 | I am lmj! (1 row)2.匿名块和事务影响 启动一个事务后执行一个自治事务匿名块如果事务回滚则匿名块不回滚。 openGauss# truncate table t1; TRUNCATE TABLEopenGauss# START TRANSACTION; START TRANSACTION openGauss# DECLARE openGauss-# PRAGMA AUTONOMOUS_TRANSACTION; openGauss-# BEGIN openGauss$# raise notice an autonomous transaction anonymous block.; openGauss$# insert into t1 values(1,it will commit!); openGauss$# END; openGauss$# / NOTICE: an autonomous transaction anonymous block.ANONYMOUS BLOCK EXECUTE openGauss# insert into t1 values(1,you will rollback!); INSERT 0 1 openGauss# rollback; ROLLBACK openGauss# select * from t1;a | b --------------------1 | it will commit! (1 row)3.外部匿名块和内部匿名块 其中外部匿名块是一个公共匿名块而内部匿名块是一个自治事务匿名块可以根据如下例子和第二个例子对比事务回滚和匿名块回滚 openGauss# truncate table t1; TRUNCATE TABLEopenGauss# DECLARE openGauss-# BEGIN openGauss$# DECLARE openGauss$# PRAGMA AUTONOMOUS_TRANSACTION; openGauss$# BEGIN openGauss$# raise notice just use call.; openGauss$# insert into t1 values(1,can you rollback!); openGauss$# END; openGauss$# insert into t1 values(2,I will rollback!); openGauss$# rollback; openGauss$# END; openGauss$# / NOTICE: just use call. ANONYMOUS BLOCK EXECUTE openGauss# select * from t1;a | b ------ (0 rows)4.匿名块直接执行自治事务匿名块并引发异常 openGauss# DECLARE openGauss-# PRAGMA AUTONOMOUS_TRANSACTION; openGauss-# res int : 0; openGauss-# res2 int : 1; openGauss-# BEGIN openGauss$# raise notice just use call.; openGauss$# res2 res2/res; openGauss$# END; openGauss$# / NOTICE: just use call.ERROR: ERROR: division by zero CONTEXT: PL/pgSQL function inline_code_block line 7 at assignment匿名块执行错误会报出异常 5.异常捕获 在执行期间引发异常后将捕获匿名块如下所示在执行错误后抛出 autonomous throw exception 提示 openGauss# DECLARE openGauss-# PRAGMA AUTONOMOUS_TRANSACTION; openGauss-# res int : 0; openGauss-# res2 int : 1; openGauss-# BEGIN openGauss$# raise notice error catch.; openGauss$# res2 res2/res; openGauss$# EXCEPTION openGauss$# WHEN division_by_zero THEN openGauss$# raise notice autonomous throw exception.; openGauss$# END; openGauss$# / NOTICE: error catch.NOTICE: autonomous throw exception. ANONYMOUS BLOCK EXECUTE
http://www.hkea.cn/news/14263323/

相关文章:

  • 广州大题小做考研网站wordpress小小工具
  • 做一人网站要多少钱展示型网站搭建
  • 通过dede访问自己做的网站html完整网站开发
  • 服装网站建设需求分析报告淘宝网的网站建设
  • tp5.1做的网站网站导航条模板
  • 一个电商网站建设需要哪些技术网站内容页收录
  • 看过的网站做记号二七区建设局网站
  • 网站建设认知与理解菏泽网站开发
  • dz网站建设8图片这样的网站怎么做的
  • 棋牌类网站开发cms系统是什么意思
  • 网站建设毕业设计心得恋爱网页生成
  • 江苏有哪些网站建设的公司动态速写网站
  • 泰安肥城建设局网站合肥网站开发需要
  • 做彩票网站代理本地企业网站建设服务
  • 网站后台费用郑州企业建站详情
  • 电子商务网站开发人员要求国内顶尖小程序开发公司
  • 网站建站侵权怎么办网站推广的途径有哪些
  • 厦门网站制作方案淘宝做短视频网站好
  • 合肥网站制作价格河南比较出名的外贸公司
  • 怎样做电商网站vps 同时翻墙和做网站
  • 江门营销网站建设网址界面
  • 深圳哪个网站建设公司好名雕装饰
  • 在电脑上哪里可以做网站地方门户网站系统有哪些
  • 辽宁网站建设企业定制公司防蚊手环移动网站建设
  • 长沙哪里有专业做网站常熟市维摩剑门绿茶网站建设目标
  • 湖北高速公路建设网站工作服图片大全
  • 上海网站建设哪里便宜wordpress外观选单分类添加不
  • 佛山seo整站优化大连网建会
  • 广州网站建设市场使用html制作个人主页
  • 公司网站优化做网站建设最好的公司是