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语句中)。
•数据库表列的名称优先于局部变量的名称。
Oracle入门(十四G)之PL / SQL中检索数据相关推荐
- Oracle入门(十四)之PL/SQL
一.PL/SQL 基本语法 PL/SQL语言是模块式的过程化SQL,是oracle公司对SQL的扩展. (1) (2) (3) (5) (6) (7)数据类型 Number 数字型 Varchar2 ...
- SRPG游戏开发(三十四)第八章 游戏中的数据 - 四 数据编辑器(Data Editor)
返回总目录 第八章 游戏中的数据(Data in Game) 在之前的章节中,我们进行地图对象的生成,移动等操作. 这一章本来可以进行战斗的编写,不过数据缺失是一个问题. 所以这一章我们先来建立一些数 ...
- 【PL/SQL】处理数据
一.在PL/SQL中查询数据 1.在PL/SQL中使用SELECT语句 ·在PL/SQL代码中嵌入SELECT语句可以查询数据 ·将查询出的数据保存在变量中,提供后续的输出或处理 ·使用INTO子句 ...
- Oracle入门(十四.4)之在PL / SQL中使用变量
一.变量的使用 (1)使用变量的原因 •临时存储数据 •储存值的操作 •可重用性 (2)处理PL / SQL中的变量 变量是: •在声明部分声明并初始化 •在可执行部分中使用并分配新值 变量可以是: ...
- Oracle数据库第四课——PL/SQL中的条件控制
知识点: PL/SQL 有 3 种类型的条件控制结构:IF.ELSIF 和 CASE 语句.掌握 IF 语句的用法, 掌握 ELSIF 语句的用法, 理解嵌套 IF 语句的用法, 掌握 CASE 语句 ...
- FreeSql (二十四)Linq To Sql 语法使用介绍
原本不支持 IQueryable 主要出于使用习惯的考虑,如果继承 IQueryable,编写代码的智能总会提示出现一堆你不想使用的方法(对不起,我有强迫症),IQueryable 自身提供了一堆没法 ...
- oracle sql字符拆分字符串函数,oracle-是否有在PL / SQL中拆分字符串的功能?
oracle-是否有在PL / SQL中拆分字符串的功能? 我需要编写一个过程来规范具有由一个字符连接的多个令牌的记录. 我需要获得这些令牌来分割字符串,并将每个令牌作为新记录插入表中. Oracle ...
- 在pl/sql中使用exp/imp工具实现oracle数据导出/导入
在pl/sql中使用exp/imp工具实现oracle数据导出/导入 2006年11月19日 星期日 10:59 Oracle 数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令 ...
- 金仓数据库KingbaseES 迁移工具—PL/SQL中Oracle和KingbaseES 的对比
关键字: KingbaseES.PL/SQL.存储过程.函数 一.PL/SQL语言兼容特性 在 PL/SQL 语言方面,KingbaseES 提供了大量的Oracle 兼容特性.这些特性使得大多数的 ...
最新文章
- HW2017笔试编程题
- odoo定时发送邮件
- hadoop Federation搭建
- 关于父窗口获取跨域iframe子窗口中的元素
- request请求在Struts2中的处理步骤
- Transfomer入门:Self-attention + Multi-head Self-attention
- 最新版Scrum指南已发布
- “三步走”助你完成领导者转变
- Net需要掌握的知识
- python老师 课时费_花10分钟写一个Python脚本,搞定了初中老师一下午的工作
- iOS UITabBarController
- 深入Managed DirectX9(十五)
- 挑战程序设计竞赛2 算法与数据结构 笔记
- imx8mm yocto_bsp 编译
- AE 动效工作流技巧 —— 减少 Bodymovin 导出的 JSON 大小并提升性能(三)
- Crackme 23
- 网络语言c某人,1999—2019,21年的网络流行语,你确定你真的懂?
- 重装系统后,文件数据被格式化如何恢复?
- c# RoundUp函数
- 中银泰定期存款理财技巧
热门文章
- java数组键_Java基础之数组
- Hash-table(用除法散列法实现)
- zookeeper理解
- 调用其他app 的lib_ButterKnife执行效率为什么比其他注入框架高?它的原理是什么...
- 多项式求逆模板(NTT + mod)
- B-Donut Drone(循环/分块/DP)
- Codeforces Round #716 (Div. 2) D. Cut and Stick 主席树 + 思维
- CodeCraft-21 and Codeforces Round #711 (Div. 2) D. Bananas in a Microwave 优化暴力
- P2146 [NOI2015] 软件包管理器
- 2020牛客国庆集训派对day2 AKU NEGARAKU