oracle PL/SQL(procedure language/SQL)程序设计(在PL/SQL中使用SQL)
在PL/SQL程序中,允许使用的SQL语句只有DML和事务控制语句,使用DDL语句是非法的。
使用SELECT语句从数据库中选取数据时,只能返回一行数据。
使用COMMIT, ROLLBACK, 和SAVEPOINT语句控制事务。
使用隐式游标(implicit cursors)测定DML语句的执行结果。
DDL语句只能通过内置的DBMS_SQL包来使用。
在PL/SQL中的SELECT语句
SELECT select_list
INTO {variable_name[, variable_name]...
| record_name}
FROM table
WHERE condition;
必须使用INTO子句
例子
DECLARE
v_deptno NUMBER(2);
v_loc VARCHAR2(15);
BEGIN
SELECT deptno, loc (select检索出列变量的值 赋给 相应的变量)
INTO v_deptno, v_loc
FROM dept
WHERE dname = 'SALES'; ...
END;
存储数据检索结果
例子
DECLARE
v_empRecord emp%ROWTYPE; (行变量)
BEGIN
-- 从emp表中检索一条记录并存储到v_empRecord记录变量中。(一条记录也就是数据库表中的一行记录)
SELECT *
INTO v_empRecord
FROM emp
WHERE empno = 7369;
dbms_output.put_line(v_empRecord.empno||v_empRecord.ename||v_empRecord.sal);
END;
存储数据检索结果
例子
DECLARE
v_deptName dept.dname%TYPE;
v_deptNo dept.deptno%TYPE;
BEGIN
-- 从dept中检索一条记录(具有两个字段)存储到v_deptNo和v_deptName变量中。
SELECT deptno, dname
INTO v_deptNo, v_deptName
FROM dept
WHERE deptno = 20;
dbms_output.put_line(v_deptNo||v_deptName);
END;
返回指定部门的所有员工的工资总额
DECLARE
v_sum_sal emp.sal%TYPE;
v_deptno NUMBER NOT NULL := 10;
BEGIN
SELECT SUM(sal) -- group function
INTO v_sum_sal
FROM emp
WHERE deptno = v_deptno;
dbms_output.put_line(v_sum_sal);
END;
使用DML命令改变数据库表的记录:
INSERT
UPDATE
DELETE
为所有在emp表中的Analysts员工增加工资
DECLARE
v_sal_increase emp.sal%TYPE := 2000;
BEGIN
UPDATE emp
SET sal = sal + v_sal_increase
WHERE job = 'ANALYST';
END;
更新dept表中的数据
v_deptno dept.deptno%TYPE:=&no;
v_dname dept.dname%TYPE :='&name';
BEGIN
UPDATE scott.dept SET dname=v_dname
WHERE deptno=v_deptno;
END;
从emp表中删除10号部门下的所有员工
DECLARE
v_deptno emp.deptno%TYPE := 10;
BEGIN
DELETE FROM emp
WHERE deptno = v_deptno;
END;
COMMIT和ROLLBACK语句
一个事务是从第一条DML语句开始直到COMMIT或ROLLBACK语句结束。
使用COMMIT和ROLLBACK语句结束一个事务。
DECLARE
v_sal NUMBER(10,2) :=&salary;
v_ename VARCHAR2(20):='&name';
BEGIN
UPDATE emp SET sal=v_sal
WHERE ename=v_ename;
COMMIT;
EXCEPTION(发生异常,就回滚)
WHEN others THEN
ROLLBACK;
END;
oracle PL/SQL(procedure language/SQL)程序设计(在PL/SQL中使用SQL)的更多相关文章
- Oracle笔记--PL/SQL(Procedure Language & Structured Query Language)
1.PL/SQL是一种高级数据库程序设计语言,专门用于在各种环境下对Oracle数据库进行访问.该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理. 2.PL/SQL是对SQ ...
- oracle PL/SQL(procedure language/SQL)程序设计
PL/SQL(procedure language/SQL)语言是Oracle对SQL语言的过程化扩充,是一个完整的编程语言.PL/SQL实现了过程化语句(如分支.循环等)与SQL语句的无缝连接,将过 ...
- “java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp”
最近在项目中使用hibernate查询时,总报错“java.sql.SQLException: Value '0000-00-00' can not be represented as java.sq ...
- 在Access中执行SQL语句
Access在小型系统开发中等到了广泛使用.虽然Access提供了可视化的操作方法,但许多开发人员还是喜欢直接用SQL语句操作数据表.如何在Access中打开SQL视图,对于初次使用Access的程序 ...
- 在Excel VBA中使用SQL到底优势在哪儿
小爬在之前的博文中多次提到,可以在VBA中写SQL来操作Excel文件,实现各类数据处理和分析需求.那么,你可能有这样的疑问:Excel原生的VBA,数据透视表,数据分析功能不够吗,为啥一定要用SQL ...
- oracle PL/SQL(procedure language/SQL)程序设计之函数+过程+包
匿名PL/SQL块回顾 DECLARE (可选) 定义在PL/SQL块中要使用的对象BEGIN (必须) 执行语句EXCEPTION (可选) 错误处理语句END; (必须)匿名块( ...
- oracle PL/SQL(procedure language/SQL)程序设计之函数+过程+包(转)
匿名PL/SQL块回顾 DECLARE (可选) 定义在PL/SQL块中要使用的对象 BEGIN (必须) 执行语句 EXCEPTION (可选) 错误处理语句 END; (必 ...
- [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)
原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下 ...
- PL/SQL(Procedure Language & Structured Query Language)
目前的PL/SQL包括两部分,一部分是数据库引擎部分:另一部分是可嵌入到许多产品(如C语言,JAVA语言等)工具中的独立引擎.可以将这两部分称为:数据库PL/SQL和工具PL/SQL. PL/SQL中 ...
- PL/SQL : Procedural Language / Structual Query Language and it is an exrension to SQL.
SQL is not very flexible and it cannot be made to react differently to differing sutuations easily. ...
随机推荐
- Lucene/ElasticSearch 学习系列 (1) 为什么学,学什么,怎么学
为什么学 <What I wish I knew When I was 20>这本书给了我很多启发.作者在书中提到,Stanford 大学培养人才的目标是 ”T形人才“:精通某个领域,但对 ...
- C:基本语句
基本语句知识 do{}while(); 与 while()do{}:for :while 语句的区别: while()do{}:先判断条件是否成立,条件满足则执行循环体 do{}while();是先执 ...
- 无责任Windows Azure SDK .NET开发入门篇一[Windows Azure开发前准备工作]
一.Windows Azure开发前准备工作 首先我们需要了解什么是 Azure SDK for .NET?微软官方告诉我们:Azure SDK for .NET 是一套应用程序,其中包括 Visua ...
- linux如何安装MyEclipse 2014
http://jingyan.baidu.com/article/0320e2c1cced031b87507b08.html
- gulp安装和使用简介
一. gulp和grunt对比 grunt目前的工作流程:读文件.修改文件.写文件——读文件.修改文件.写文件——... gulp目前的工作流程:读取文件——修改文件——修改文件...——写文件 二. ...
- Flex 日期和字符串之间转换
字符串转为日期: var dateTime:Date= DateField.stringToDate(deTime, "YYYY-MM-DD");//"YYYY-MM-D ...
- Delphi thread exception mechanism
http://www.techques.com/question/1-3627743/Delphi-thread-exception-mechanism i have a dilema on how ...
- PostgreSQL中 AnyElement AnyArray AnynonArray的区别与联系
http://www.postgresql.org/docs/current/static/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC 先看一个例 ...
- vim编码相关配置
主要与三个参数有有关 fileencoding 缩写:fenc 保存文件时所用的编码 set fenc 查看当前文件的编码 set fenc=utf-8 可以将当前文件转换为utf-8编码 filee ...
- Android中Webview使用javascript调用事先定义好的Java函数
1. 首先定义好一个类,专们用于给javascript调用 public class JavaScriptInterface { // share your news public void shar ...