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;
转载于:https://www.cnblogs.com/pacoson/p/3523221.html
oracle PL/SQL(procedure language/SQL)程序设计(在PL/SQL中使用SQL)相关推荐
- oracle判断字段为空时选用别的字段_oracle中使用sql查询时字段为空则赋值默认
转至:http://www.th7.cn/db/Oracle/201501/86125.shtml oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...
- sql azure 语法_在Azure Data Studio中计划SQL笔记本
sql azure 语法 SQL Notebooks are an interactive way of creating documents, executing T-SQL queries alo ...
- oracle表中增加字段 sql语句,ORACLE中通过SQL语句(alter table)来增加、删除、修改字段...
1.添加字段: alter table 表名 add (字段 字段类型) [ default '输入默认值'] [null/not null] ; 2.添加备注: comment on ...
- [译] ALTER SYSTEM CANCEL SQL : 在 Oracle Database 18c 的会话中取消 SQL 语句
原文地址:https://oracle-base.com/articles/18c/alter-system-cancel-sql-18c 原文作者:Tim Hall Oracle Database ...
- ssis 表达式任务_在SSIS中执行SQL任务:SqlStatementSource表达式与可变源类型
ssis 表达式任务 In this article, I will give an overview of Execute SQL Task in SSIS and I will try to il ...
- mysql不具有的特征是_MySQL中的SQL特征(转)
MySQL中的SQL特征: 为了与MySQL服务器进行通信,必须熟练掌握SQL.例如,在使用诸如mysql客户机这样的程序时,其功能首先是作为一种发送SQL 语句给服务器执行的工具.而且,如果编写使用 ...
- 公开发布版的Windows Azure 基础结构服务中的 SQL Server – 文档和最佳实践(已更新),还有即将发布的博客...
一周前,WindowsAzure 刚刚宣布公开发布版的基础结构服务正式推出, 这标志着WindowsAzure从此开始完全支持基础结构即服务,SQL Server是其中的一个主要组件. 预安装的SQL ...
- 在Access中执行SQL语句
Access在小型系统开发中等到了广泛使用.虽然Access提供了可视化的操作方法,但许多开发人员还是喜欢直接用SQL语句操作数据表.如何在Access中打开SQL视图,对于初次使用Access的程序 ...
- python解析sql文件_如何从Python中解析sql文件?
是否有任何方法可以从Python中执行.SQL文件中的某些SQL命令,而不是文件中的所有SQL命令?假设我有以下.sql文件:DROP TABLE IF EXISTS `tableA`; CREATE ...
- Oracle数据库第二课——使用PL/SQL进行初步编程,了解PL/SQL的相关知识
知识点:了解PL/SQL的编程的基础:了解PL/SQL的注释:掌握PL/SQL的块结构:掌握PL/SQL的数据类型.运算符.字符集.标识符:掌握PL/SQL语句块的书写.变量的声明和赋值 1.PL/S ...
最新文章
- 【二维树状数组】See you~
- 2017 04 04 省选模拟
- About JXTA message reliable design
- 信息抽取(五)实体命名识别之嵌套实体识别哪家强,我做了一个简单的对比实验
- 思科查看服务器启动配置文件,启动配置检查UCS
- java spring包_java 自定义加载器,加载spring包,动态加载实现,jar包隔离,tomcat加载webapp方式...
- python 神经网络_推荐 :用Python实现神经网络(附完整代码)!
- C++ 连接数据库的入口和获取列数、数据
- java.net.URISyntaxException: Illegal character in query at index,http请求url中有非法字符导致
- Android NDK JNI C++ 3
- 火狐浏览器怎么安装未经认证的附加组件
- #天府TV#《什么是成都》爆红背后,还有上千热泪盈眶留言!
- 渔夫与商人的故事:人的一生到底在追求什么
- salesforce chatter提醒带Mention(即@)
- 软件构造设计模式III(转载整合)
- iOS 设置按钮上图下文的方式
- 如何使用COM-Hunter检测持久化COM劫持漏洞
- FYD-Focus Your Distribution-关注你的分布:异常检测和定位的从粗到细的非对比性学习-FYD
- QQ如何设置使用代理服务器?
- Qt实现软件任务栏托盘功能
热门文章
- ztree隐藏指定节点后面的(重命名和删除)图标
- 【NOIP2017】【Luogu3954】成绩(模拟)
- 【HNOI2006】【BZOJ1192】鬼谷子的钱袋(水题,位运算?)
- 【NOIP2000】【Luogu1019】单词接龙
- rsa 公 填充模式的_RSA加密的填充模式
- 小新air15为啥没人买_联想小新air15怎么样?身边的人用的好像比较少?
- 计算一个连通分量中节点的个数的两种方法
- bzoj 1027: [JSOI2007]合金(floyd最小环)
- C#数据流:文件流、内存流、网络流
- ----函数句柄/时间表