一、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中检索数据相关推荐

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

    一.PL/SQL 基本语法 PL/SQL语言是模块式的过程化SQL,是oracle公司对SQL的扩展. (1) (2) (3) (5) (6) (7)数据类型 Number 数字型 Varchar2 ...

  2. SRPG游戏开发(三十四)第八章 游戏中的数据 - 四 数据编辑器(Data Editor)

    返回总目录 第八章 游戏中的数据(Data in Game) 在之前的章节中,我们进行地图对象的生成,移动等操作. 这一章本来可以进行战斗的编写,不过数据缺失是一个问题. 所以这一章我们先来建立一些数 ...

  3. 【PL/SQL】处理数据

    一.在PL/SQL中查询数据 1.在PL/SQL中使用SELECT语句 ·在PL/SQL代码中嵌入SELECT语句可以查询数据 ·将查询出的数据保存在变量中,提供后续的输出或处理 ·使用INTO子句 ...

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

    一.变量的使用 (1)使用变量的原因 •临时存储数据 •储存值的操作 •可重用性 (2)处理PL / SQL中的变量 变量是: •在声明部分声明并初始化 •在可执行部分中使用并分配新值 变量可以是: ...

  5. Oracle数据库第四课——PL/SQL中的条件控制

    知识点: PL/SQL 有 3 种类型的条件控制结构:IF.ELSIF 和 CASE 语句.掌握 IF 语句的用法, 掌握 ELSIF 语句的用法, 理解嵌套 IF 语句的用法, 掌握 CASE 语句 ...

  6. FreeSql (二十四)Linq To Sql 语法使用介绍

    原本不支持 IQueryable 主要出于使用习惯的考虑,如果继承 IQueryable,编写代码的智能总会提示出现一堆你不想使用的方法(对不起,我有强迫症),IQueryable 自身提供了一堆没法 ...

  7. oracle sql字符拆分字符串函数,oracle-是否有在PL / SQL中拆分字符串的功能?

    oracle-是否有在PL / SQL中拆分字符串的功能? 我需要编写一个过程来规范具有由一个字符连接的多个令牌的记录. 我需要获得这些令牌来分割字符串,并将每个令牌作为新记录插入表中. Oracle ...

  8. 在pl/sql中使用exp/imp工具实现oracle数据导出/导入

    在pl/sql中使用exp/imp工具实现oracle数据导出/导入 2006年11月19日 星期日 10:59 Oracle 数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令 ...

  9. 金仓数据库KingbaseES 迁移工具—PL/SQL中Oracle和KingbaseES 的对比

    关键字: KingbaseES.PL/SQL.存储过程.函数 一.PL/SQL语言兼容特性 在 PL/SQL 语言方面,KingbaseES 提供了大量的Oracle 兼容特性.这些特性使得大多数的 ...

最新文章

  1. HW2017笔试编程题
  2. odoo定时发送邮件
  3. hadoop Federation搭建
  4. 关于父窗口获取跨域iframe子窗口中的元素
  5. request请求在Struts2中的处理步骤
  6. Transfomer入门:Self-attention + Multi-head Self-attention
  7. 最新版Scrum指南已发布
  8. “三步走”助你完成领导者转变
  9. Net需要掌握的知识
  10. python老师 课时费_花10分钟写一个Python脚本,搞定了初中老师一下午的工作
  11. iOS UITabBarController
  12. 深入Managed DirectX9(十五)
  13. 挑战程序设计竞赛2 算法与数据结构 笔记
  14. imx8mm yocto_bsp 编译
  15. AE 动效工作流技巧 —— 减少 Bodymovin 导出的 JSON 大小并提升性能(三)
  16. Crackme 23
  17. 网络语言c某人,1999—2019,21年的网络流行语,你确定你真的懂?
  18. 重装系统后,文件数据被格式化如何恢复?
  19. c# RoundUp函数
  20. 中银泰定期存款理财技巧

热门文章

  1. java数组键_Java基础之数组
  2. Hash-table(用除法散列法实现)
  3. zookeeper理解
  4. 调用其他app 的lib_ButterKnife执行效率为什么比其他注入框架高?它的原理是什么...
  5. 多项式求逆模板(NTT + mod)
  6. B-Donut Drone(循环/分块/DP)
  7. Codeforces Round #716 (Div. 2) D. Cut and Stick 主席树 + 思维
  8. CodeCraft-21 and Codeforces Round #711 (Div. 2) D. Bananas in a Microwave 优化暴力
  9. P2146 [NOI2015] 软件包管理器
  10. 2020牛客国庆集训派对day2 AKU NEGARAKU