Oracle入门(十四.1)之PL / SQL简介

一、PL / SQL描述

程序语言扩展到SQL:
•允许将基本程序逻辑和控制流与SQL语句组合在一起。
•是Oracle专有编程语言。

- 它只能用于Oracle数据库或工具。


二、程序语言扩展到SQL

•是一种程序语言。
- 当遵循一系列指令时会产生结果。
•是3GL(第三代编程语言)。

- 它是一种“高级”编程语言。


三、结构化查询语言(SQL)描述

SQL:
•用于访问和修改关系数据库中数据的主要语言。
•是一种非过程性语言。
- 也称为“声明性语言”,它允许程序员专注于输入和输出而不是程序步骤。
•是4GL(第四代编程语言)。

- 比编程语言更接近自然语言的语言; 查询语言通常是4GL。

•是多种数据库(包括Oracle)的通用查询语言。
•由美国国家标准学会(ANSI)标准化。


四、SQL语句

显示的SQL语句非常简单直接。
但是,如果您想以传统方式更改任何检索到的数据(如果数据是xyz,请对此执行此操作),您会遇到SQL的局限性。
SELECT class_id, stu_id, final_numeric_grade, final_letter_grade
FROM enrollments;

例如,如何编写SQL语句来为不同类别的学生以不同字母等级更新final_letter_grade数据?


SQL的限制


显示更新最终字母等级数据的一个解决方案。 您需要为class_id = 1编写多少条SQL语句? 对于class_id = 2? 如果有20个班级呢?

UPDATE enrollments
SET final_letter_grade='A'
WHERE class_id=1 AND
Final_numeric_grade BETWEEN 66 and 75;UPDATE enrollments
SET final_letter_grade='B'
WHERE class_id=1 AND
Final_numeric_grade between 56 and 65;And so on…

一种解决方案是为每个class_id plus number_grade组合编写一条SQL语句。 这会产生五个针对class_id = 1的SQL语句:

UPDATE enrollments SET final_letter_grade='A'
WHERE class_id=1 AND final_numeric_grade BETWEEN 66 and 75;UPDATE enrollments SET final_letter_grade='B'
WHERE class_id=1 AND final_numeric_grade BETWEEN 56 and 65;UPDATE enrollments SET final_letter_grade='C'
WHERE class_id=1 AND final_numeric_grade BETWEEN 46 and 55;UPDATE enrollments SET final_letter_grade='D'
WHERE class_id=1 AND final_numeric_grade BETWEEN 36 and 45;UPDATE enrollments SET final_letter_grade='F'
WHERE class_id=1 AND final_numeric_grade <=35;

这是很多声明,甚至不包括其他类ID的声明! 同样,将有五个class_id = 2的语句。
编写单一的陈述来完成这项任务会更容易。 该陈述将需要逻辑,否则被称为条件或程序逻辑。
PL / SQL使用过程逻辑来扩展SQL。

DECLAREv_new_letter_grade varchar2(1);CURSOR c_enrollments ISSELECT stu_id, final_numeric_grade FROM enrollments WHERE class_id=1;
BEGINFOR c1 in c_enrollmentsLOOPIF c1.final_numeric_grade BETWEEN 66 and 75 THEN v_new_letter_grade := 'A';ELSIF c1.final_numeric_grade BETWEEN 56 AND 65 THEN v_new_letter_grade := 'B';ELSIF c1.final_numeric_grade BETWEEN 46 AND 55 THEN v_new_letter_grade := 'C';ELSIF c1.final_numeric_grade BETWEEN 36 AND 45 THEN v_new_letter_grade := 'D';ELSEv_new_letter_grade := 'F';END IF;UPDATE enrollmentsSET final_letter_grade=v_new_letter_grade WHERE class_id=1 AND stu_id=c1.stu_id;END LOOP;COMMIT;
END;


五、程序构造

您使用PL / SQL来编写过程代码,并在PL / SQL代码中嵌入SQL数据访问语句。
PL / SQL代码使用变量,游标和条件逻辑。
PL / SQL提供程序结构,例如:
- 变量,常量和类型
- 控制结构,如条件语句和循环
- 可重复使用的程序单元,一次写入并执行多次


程序性结构突出显示



六、PL / SQL的特性

PL/ SQL:
•是一种高度结构化,易读,易读的语言。
•是Oracle开发的标准和便携式语言。
•是嵌入式语言,它适用于SQL。
•是一种高性能,高度集成的数据库语言。
•基于ADA语言,语法上有很多相似之处。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建高性能.NET应用之配置高可用IIS服务器-第三篇 IIS中三个核心组件的讲解(上)

今天的文章的比较的容易&#xff0c;主要讲述IIS中三个比较重要的组件&#xff1a;协议监听者(Protocol Listeners)&#xff0c;WWW服务(World Wide Web Publishing Service)和WAS(Windows Process Activation Service)&#xff0c;理解这三个组件的功能&#xff0c;是理解IIS…

7.netty服务器中提交任务到NioEventLoop(Nio事件循环执行线程)

【README】 1.本文总结自 B站 《尚硅谷-netty》; 2.NioEventLoop实际上是一个提交到线程池的Runnable任务&#xff0c;在while无限循环中运行 taskQueue中的任务&#xff08;串行&#xff09;&#xff1b; 【1】提交任务到NioEventLoop 1&#xff09;NioEventLoop&#xff1…

Oracle入门(十四.2)之PL / SQL的好处

一、PL / SQL的好处在Oracle数据库中使用PL / SQL编程语言有很多好处。 1.将过程构造与SQL集成 2.模块化程序开发 3.改进的性能 4.与Oracle工具集成 5.便携性6.异常处理二、优点 优点1&#xff1a;使用SQL集成程序化结构PL / SQL的首要优势是程序结构与SQL的集成。 SQL是一种非…

炒菜机器人的弊端_机器人炒菜真不是你想的那样!

7月8日下午&#xff0c;爱餐全产业链模式发布会在张家口进行&#xff0c;会上&#xff0c;张家口文旅投集团与上海爱餐机器人有限公司签订了3000台智能机器人设备合作协议&#xff0c;这些机器人可是身手不凡&#xff0c;清一色的都是会厨艺的炒菜机器人&#xff0c;未来他们还…

构建高性能.NET应用之配置高可用IIS服务器-第四篇 IIS常见问题之:工作进程回收机制(上)

通过三篇文章的普及&#xff0c;相信大家对IIS应该有了一个基本的了解。那么从本篇文章开始&#xff0c;我们就开始进入IIS一些比较实际的话题&#xff1a;如何配置IIS&#xff0c;使得其性能尽可能的高。 我们在本篇中主要讲述的就是“工作进程回收机制”&#xff0c;下面我们…

8.基于netty实现群聊,心跳检测

【README】 1.本文总结自B站《netty-尚硅谷》&#xff0c;很不错&#xff1b; 2.本文po出了 Unpooled创建缓冲区的 代码示例&#xff1b; 3.本文示例代码基于netty实现以下功能&#xff1a; 群聊客户端及服务器&#xff1b;心跳检测&#xff1b;【1】Unpooled创建缓冲区 U…

Oracle入门(十四.3)之创建PL / SQL块

一、PL / SQL块结构 一个PL / SQL块由三部分组成。PL / SQL块结构部分二、PL / SQL编译器用高级编程语言&#xff08;C&#xff0c;Java&#xff0c;PL / SQL等&#xff09;编写的每个程序都必须经过检查并转换为二进制代码&#xff08;1和0&#xff09;&#xff0c;然后才能执…

[.NET Core].NET Core R2安装及示例教程

前言 前几天.NET Core发布了.NET Core 1.0.1 R2 预览版&#xff0c;之前想着有时间尝试下.NET Core。由于各种原因&#xff0c;就没有初试。刚好&#xff0c;前几天看到.NET Core发布新版本了&#xff0c;决定要去一探究竟。于是乎&#xff0c;就立马去官网查找相关的信息&…

Oracle入门(十四.4)之在PL / SQL中使用变量

一、变量的使用 &#xff08;1&#xff09;使用变量的原因•临时存储数据 •储存值的操作 •可重用性&#xff08;2&#xff09;处理PL / SQL中的变量变量是&#xff1a; •在声明部分声明并初始化 •在可执行部分中使用并分配新值 变量可以是&#xff1a; •作为参数传递给PL …

dismiss的词组_法律英语常用词必记:Dismiss

Dismiss英[dɪsmɪs] 美[dɪsmɪs]【英文释义】v.to refuse to give further hearing to a case in court. If a judge dismisses a court case, they officially decide that the case should not continue【中文释义】v. (1)解雇&#xff1b;免职&#xff1b;开除(2)驳回(起诉…

构建高性能.NET应用之配高可用IIS服务器-第五篇 IIS常见问题之:工作进程回收机制(中)

我们在本篇中接着讲述“工作进程回收机制”。 本篇文章的议题如下&#xff1a; 工作进程回收机制讲解 基于时间的回收机制 基于请求数的回收机制 基于内存使用的回收机制 基于活动状态的回收机制 基于请求数的回收机制 这种基于请求数量回收的机制非常的好理解&#xff1a;当我…

10.netty客户端与服务器使用protobuf传输报文

【README】 本文总结自B站《尚硅谷-netty》&#xff0c;很不错&#xff1b; 内容如下&#xff1a; netty的编码器与解码器&#xff1b;netty客户端与服务器通过 protobuf 传输报文的开发方式&#xff1b;文末po出了所有代码&#xff1b;【1】netty的编码器与解码器 codec 1&…

Oracle入门(十四.5)之识别数据类型

一、PL / SQL数据类型 数据类型指定存储格式&#xff0c;约束和有效的值范围。 PL / SQL支持五类数据类型&#xff1a;二、标量数据类型&#xff08;Scalar&#xff09; &#xff08;1&#xff09;标量数据类型•保持一个值 •没有内部组件 •可以分为四类&#xff1a; - 性格…

TFS2015的CI集成

这篇应该是这个系列的最后一篇了 配置生成代理 配置dotnet cli环境 这步&#xff0c;需要在生成代理的机器上配置cli环境&#xff0c;与本地配置方法一致&#xff0c;可以自行Google 下载及参考地址&#xff1a; https://www.microsoft.com/net/core#windows 配置环境变量 在生…

pivot sqlserver 条件_行转列之SQLSERVERPIVOT与用法详解

在数据库操作中&#xff0c;有些时候我们遇到需要实现“行转列”的需求&#xff0c;例如一下的表为某店铺的一周收入情况表&#xff1a;WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL)我们先插入一些模拟数据&#xff1a;INSERT INTO WEEK_INCOMESELECT 星期一,1000UNION ALLSE…

Oracle入门(十四.6)之使用标量数据类型

一、声明字符变量 字符数据类型包括CHAR&#xff0c;VARCHAR2和LONG。 DECLAREv_emp_job VARCHAR2(9);v_order_no VARCHAR2(6);v_product_id VARCHAR2(10);v_rpt_body_part LONG; …二、声明数字变量 数字数据类型包括NUMBER&#xff0c;PLS_INTEGER&#xff0c;BINARY_INTEGER…

11.netty入站与出站(处理器链调用机制)

【README】 1.本文源代码总结自 B站《netty-尚硅谷》&#xff1b;2.本文部分内容总结自 https://www.baeldung.com/netty3.本文主要介绍了通道管道中多个入栈处理器与多个出站处理器如何执行&#xff1f;并用代码演示执行顺序&#xff1b; 补充&#xff1a;文末附带了 log4j整…

1688推广工具_全面了解1688数字营销

全面了解1688数字营销什么是数字营销&#xff1f;在数字营销中&#xff0c;有一款很重要的工具-一键推广。在我们的日常经营和大促中&#xff0c;通过一键站外推广可以在各大站外平台实现全店、各产品的推广&#xff0c;尤其在大促中&#xff0c;结合活动当天的站内流量&#x…

Entity Framework升级

第三篇是Entity Framework升级 修改project.json 把原来 EntityFramework 的包 换成 Microsoft.EntityFrameworkCore 版本从 7.0.0-rc1-final 改为 1.0.0-rc2-final 对照表如下&#xff1a; RC1 PackageRC2 EquivalentEntityFramework.MicrosoftSqlServer 7.0.0-rc1-finalMicro…

12.netty中tcp粘包拆包问题及解决方法

【README】 1.本文源代码总结自B站《netty-尚硅谷》&#xff1b;2.本文介绍了tcp粘包拆包问题&#xff1b;3.本文po 出了粘包拆包问题解决方案及源代码实现&#xff1b;【1】tcp粘包拆包问题 refer2 How to deal with the problem of packet sticking and unpacking during T…