Oracle入门(十四G)之PL / SQL中检索数据

一、PL / SQL中检索数据

(1)PL / SQL中的SQL语句
可以在PL / SQL中使用以下几种SQL语句:
•SELECT从数据库检索数据。
•DML语句,例如INSERT,UPDATE和DELETE,以更改数据库中的行。
•事务控制语句,例如COMMIT,ROLLBACK或SAVEPOINT。 您使用事务控制语句对数据库进行更改/永久或丢弃它们。 事务控制语句将在本课程后面介绍。

本文包含SELECT语句。

(2)不能直接在PL / SQL中使用DDL和DCL。


PL / SQL不直接支持数据定义语言(DDL)语句,例如CREATE TABLE,ALTER TABLE或DROP TABLE以及DCL语句(如GRANT和REVOKE)。
您不能直接执行DDL和DCL语句,因为它们是在运行时构建和执行的。 也就是说,它们是动态的。 静态SQL语句是编译程序时修复的语句。


二、PL / SQL中的SELECT语句

(1)用SELECT语句从数据库中检索数据
句法:
SELECT select_listINTO {variable_name [, variable_name ]...| record_name}FROM table[WHERE condition];
INTO子句是强制性的,发生在SELECT和FROM子句之间。 它用于指定保存SQL从SELECT子句返回的值的PL / SQL变量的名称。 您必须为每个选定的项目指定一个变量,并且变量的顺序必须与所选项目相对应。
DECLAREv_country_name wf_countries.country_name%TYPE;
BEGINSELECT country_name INTO v_country_nameFROM wf_countries WHERE country_id= 359;DBMS_OUTPUT.PUT_LINE(' The country name is :'||v_country_name);
END;


(2)在PL / SQL中检索数据
检索指定员工的hire_date和薪水。

例:

DECLAREv_emp_hiredate employees.hire_date%TYPE;v_emp_salary employees.salary%TYPE;
BEGINSELECT hire_date, salaryINTO v_emp_hiredate, v_emp_salaryFROM employeesWHERE employee_id = 100;DBMS_OUTPUT.PUT_LINE('Hiredate is: ' || v_emp_hiredate|| ' and Salary is: '|| v_emp_salary);
END;

PL / SQL块中的SELECT语句属于嵌入式SQL的ANSI分类,适用以下规则:

查询必须返回一行。 返回多行或无行的查询会生成错误。 您将在本课程后期学习错误处理。

DECLAREv_salary employees.salary%TYPE;
BEGINSELECT salary INTO v_salaryFROM employees;DBMS_OUTPUT.PUT_LINE(' Salary is : ' || v_salary);
END;

返回指定部门中所有员工的工资总额。

DECLAREv_sum_sal NUMBER(10,2);v_deptno NUMBER NOT NULL := 60;
BEGINSELECT SUM(salary) -- group functionINTO v_sum_sal FROM employeesWHERE department_id = v_deptno;DBMS_OUTPUT.PUT_LINE ('The sum of salary is '|| v_sum_sal);
END;

(3)在PL / SQL中检索数据的准则
•用分号(;)终止每个SQL语句。
•检索的每个值必须使用INTO子句存储在变量中。
•WHERE子句是可选的,可以包含输入变量,常量,文字或PL / SQL表达式。 但是,应该只提取一行,因此几乎在所有情况下都需要使用WHERE子句。
•在INTO子句中指定与SELECT子句中的数据库列相同数量的变量。 确保它们的位置对应,并且它们的数据类型是兼容的。

•使用%TYPE声明接收变量。


三、命名约定准则

(1)在可能不明确的SQL语句中,数据库列的名称优先于局部变量的名称

DECLAREv_hire_date employees.hire_date%TYPE;employee_id employees.employee_id%TYPE := 176;
BEGINSELECT hire_dateINTO v_hire_dateFROM employeesWHERE employee_id = employee_id;
END;

此示例引发未处理的运行时异常,因为在WHERE子句中,PL / SQL变量名称与employees表中的数据库列名称的名称相同。


(2)在以下PL / SQL块中删除了什么?

DECLARElast_name VARCHAR2(25) := 'King';
BEGINDELETE FROM emp_dup WHERE last_name = last_name;
END;
(3)命名约定准则

•使用命名约定来避免WHERE子句中的歧义。
•避免使用数据库列名作为标识符。
•执行期间可能会发生错误,因为PL / SQL会首先检查表中列的数据库。
•局部变量和形式参数的名称优先于数据库表的名称(在PL / SQL语句中)。
•数据库表列的名称优先于局部变量的名称。


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

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

相关文章

.NET Core 1.0 CentOS7 尝试

昨天宣布 ASP.NET Core RC2,据说差不多稳定了,以后不会有大改了。 参考:https://blogs.msdn.microsoft.com/webdev/2016/05/16/announcing-asp-net-core-rc2/ 一、环境装备 等待很久了,高兴之余昨晚安装一个CentOS系统,版本如下&a…

6.netty线程模型-Reactor

【README】 1..本文部分内容翻译自: [Netty] Nettys thread model and simple usage 2.netty模型是以 Reactor模式为基础的,具体的,netty使用的是 主从Reactor多线程模型; 3.先介绍了 Reactor线程模型;后介绍了 Ne…

python mac读取 文件属性_从Python获取和设置mac文件和文件夹查找器标签

macfile模块是^{}模块的一部分,在"2006-11-20 0.2.0"中被重命名为mactypes使用此模块,以下两个函数可用于获取和设置appscript 1.0版的查找器标签:from appscript import appfrom mactypes import File as MacFile# Note these lab…

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

一、PL / SQL描述程序语言扩展到SQL: •允许将基本程序逻辑和控制流与SQL语句组合在一起。 •是Oracle专有编程语言。- 它只能用于Oracle数据库或工具。二、程序语言扩展到SQL•是一种程序语言。 - 当遵循一系列指令时会产生结果。 •是3GL(第三代编程语…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

一、变量的使用 (1)使用变量的原因•临时存储数据 •储存值的操作 •可重用性(2)处理PL / SQL中的变量变量是: •在声明部分声明并初始化 •在可执行部分中使用并分配新值 变量可以是: •作为参数传递给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)解雇;免职;开除(2)驳回(起诉…

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

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

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

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

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

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

TFS2015的CI集成

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

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

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

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

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