1.PL/SQL代码块
PL/SQL 代码块是指令的集合,支持所有的DML,NDS,DBMS_SQL,DDL。
:DML 是数据操纵语言(Data Manipulation Language)包括,Insert ,update,delete
: DDL是数据定义语言(Data Definition Language ),包括,Alter,create,drop,truncate,Grant,revoke
: NDS本地动态SQL(Native Dynamic SQL)
2.PL/SQL代码块结构
:声明部分
:执行部分
:异常处理部
--最小代码块
begin
null;
end;
/ --匿名块
declare --声明部分
v_date_time timestamp;
begin --执行部分
select systimestramp
into v_date_time
from dual;
DBMS_OUTPUT.PUT_LINE(v_date_time);
exception --异常处理部分
when others
then
DBMS_OUTPUT.PUT_LINE(sqlerrm)
end;
/ /*
匿名块运行
1.在SQL windows 下 的 SQL>命令后面键入所有代码即可运行。
2.用cd进入这个脚本的保存目录
3.在PL/SQL用户界面运行
*/ --命名块
create or replace procedure CompoileError
as
v_timesramp timestramp; begin
select systimestamp
into v_timesramp
from duall; --这是一张不存在的表 DBMS_OUTPUT.PUT_LINE(v_timesramp);
exception
when others
then
DBMS_OUTPUT.PUT_LINE(SQLERRM);
end;
/ /*
命名快通过编译,然后在数据库存储,然后执行
---因为调用不存在的表会编译错误
Warring:procedure created with complilation errors 查看错误信息
1.可以使用 show errors 语句 查看详细错误
show errors
2.返回存储过程的代码及行号
select line||' 'text procedure
from user_source
where name='CompoileError'
3. 执行查看错误
exec CompoileError
*/
4.触发器
触发器是PL/SQL的一种特殊实现,他们存储在数据库中,但又不是存储过程或函数。由事件驱动,并且与执行在数据库的某种操作关联。
create or replace trigger author_tring
after update of first_name
on authors
for each row
when(OLD.first_name!=NEW.first_name)
begin
DBMS_OUTPUT.PUT_LINE(
'First Name'
||:OLD.first_name
||'has change to'
||:NEW.first_name
);
end;
/ 当update first_name时,触发器被触发 update authors
set first_name='Roald'
where first_name='Ron' --屏幕上会显示:
First Name Ron has change to Ronald
------------------------------------过程,函数的创建----------------------------

--创建存储过程
create or replace AddNewAuthor(
P_ID authors.ID%TYPE,
P_FirstName authors.first_name%TYPE,
P_LasetName authors.last_name%TYPE
) as
begin
insert into authors(id,first_name,last_name)
values(P_ID,P_FirstName,P_LasetName);
end AddNewAuthor;
/ --调用存储过程
begin
AddNewAuthor(100,'Zelda','zudink');
end; --创建函数
create or replace function ThreeAuthors(p_ISBN in books.isbn%TYPE)
return boolean as
v_Author3 books.authors3%TYPE begin
select authors3
into v_Author3
from books
where isbn=p_ISBN; if v_Author3 is null then
return false;
else
return true;
end if; end ThreeAuthors; --调用函数
begin
for cur_rec in(select ISBN,title from books)loop
if ThreeAuthors(cur_rec.ISBN) then
DBMS_OUTPUT.PUT_LINE('""'||cur_rec||'"has 3 authors');
end if;
end loop;
end;
/ ---过程和函数的删除
--drop procedure procedure_name;
drop procedure AddNewAuthor;
--drop function functionname;
drop function ThreeAuthors;

PL/SQL 基础知识简介的更多相关文章

  1. pl/sql基础知识—定义并使用变量

    n  介绍 在编写pl/sql程序是,可以定义变量和常量:在pl/sql程序中包括有: ①标量类型(scalar) ②复合类型(composite) ③参照类型(reference) ④lob(lar ...

  2. 【PL/SQL基础知识】结构

    1.pl/sql块的结构 declare --声明的变量.类型.游标 begin --程序的执行部分(类似于java的main()方法) exception --针对begin块中出现的异常 ---w ...

  3. PL/SQL基础知识

    Oracle之PL/SQL学习笔记 自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了 ...

  4. pl/sql基础知识—触发器

    n  触发器简单介绍 触发器是指隐含执行的存储过程,它不是由程序员或者是DBA来显式调用,而是因为某个操作引发执行的.当定义触发器时,必须要指定触法的事件和触发的操作,常用的触发事件包括insert, ...

  5. pl/sql基础知识—过程快速入门

    n  过程 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分:通过使用输出参数可以将执行部分的数据传递 ...

  6. pl/sql基础知识—pl/sql块介绍

    n  介绍 块(block)是pl/sql的基本成型单元,编写pl/sql程序实际上就是编写pl/sql块.要完成相对简单的应用功能,可能只需要编写一个pl/sql块:但是如果要想实现复杂的功能,可能 ...

  7. pl/sql基础知识—包

    n  包 包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成. 为什么需要包:使用包可以更好的管理自己写的函数.过程 ①我们可以使用create package命令来创建包:     creat ...

  8. pl/sql基础知识—函数快速入门

    n  函数 函数用于返回特定的数据,当建立函数式,在函数头部必须包含return子句,而在函数体内必须包含return语句返回的数据,我们可以使用create function来建立函数,实际案例: ...

  9. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

随机推荐

  1. 用 label 控制 Pod 的位置 - 每天5分钟玩转 Docker 容器技术(128)

    默认配置下,Scheduler 会将 Pod 调度到所有可用的 Node.不过有些情况我们希望将 Pod 部署到指定的 Node,比如将有大量磁盘 I/O 的 Pod 部署到配置了 SSD 的 Nod ...

  2. AMDP + XSLX Workbench 报表开发模式

    本文介绍了我和同事通过使用AMDP + XSLX Workbench缩短报表开发周期.分离数据查询处理逻辑和前端展示工作的经验.欢迎讨论. 前言 最近接到了一套人力资源报表的开发需求,需要以EXCEL ...

  3. Selenium_WebDriver_控制浏览器

    版权声明:本文为博主原创文章,转载请注明出处.  浏览器环境: ①GoogleChrome:60 ②chromedriver:2.30: 访问 操作 方法 示例 访问页面 void get(java. ...

  4. python数据分析工具包(2)——Numpy(二)

    上一篇文章简单地介绍了numpy的一些基本数据类型,以及生成数组和矩阵的操作.下面我们来看一下矩阵的基本运算.在线性代数中,常见的矩阵运算包括,计算行列式.求逆矩阵.矩阵的秩等.下面我们来一一实现. ...

  5. php.ini 中文详解

    [PHP]  ; PHP还是一个不断发展的工具,其功能还在不断地删减  ; 而php.ini的设置更改可以反映出相当的变化,  ; 在使用新的PHP版本前,研究一下php.ini会有好处的   ;;; ...

  6. OpenLayer3调用天地图,拖拽后,地图消失的问题[已解决]

    拖拽后,地图直接消失了,而且右上角的坐标变成了NaN,NaN 后来经过测试发现,原来是自己封装有问题,坐标点一定要用parseFloat()转换下,但不清楚为什么页面刚开始加载的时候没有问题,总之能解 ...

  7. Python之数据类型转换

    平时我们在处理数据的时候,有些数据类型不是我们想要的,怎么办? 一.数据类型转换:要转换的类型(数据) 要把num01转换为整数:int(num01) 要把num01转换为浮点数:float(num0 ...

  8. Linux一些常用操作

    1.linux swap分区 可采用文件的方式 dd if=/dev/zero of=/var/swap bs=1024 count=2048000 mkswap /var/swap swapon / ...

  9. Python标准异常总结

    Python标准异常总结 AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性  EOFError 用户输入文件末尾标志EOF(Ctrl+d ...

  10. GNU autotools自动生成Makefile 介绍

    一.目的 使用autotools工具来帮助我们自动地生成符合自由软件惯例的makefile(这样就可以像常见的GNU程序一样,只要使用"./configure", "ma ...