学习pl/sql之一

--使用pl/sql语句打印一个hello world

begin

? dbms_output.put_line(‘hello,world‘);

end;

??
?

但是在sqlplus里面就不一样了

首先输入

begin

dbms_output.put_line(‘hello,world‘);

end;

/

通过set serveroutput on

/

来调用输出语句

?

可以通过edit命令对过程语句进行修改

?

name [constrant]datatype[notnull]:=|default value

?

?

--pl/sql语句中的if语句

declare

? ? ?sal1 number(6,2);

begin

? select sal into sal1 from emp where lower(ename)=lower(‘&ename‘);

? if (sal1<2000) then

? ? dbms_output.put_line(‘less 2000‘);

? ? end if;

end;

?

--pl/sql 里面的 if else 语句

declare

? ? ?sal1 number(6,2);

begin

? select sal into sal1 from emp where lower(ename)=lower(‘&ename‘);

? if (sal1<2000) then

? ? dbms_output.put_line(‘less 2000‘);

? ? else

? ? ? dbms_output.put_line(‘more 2000‘);

? ? end if;

end;

?

--pl/sql语句中的if elsif语句

declare

? ? ?sal1 number(6,2);

begin

? select sal into sal1 from emp where lower(ename)=lower(‘&ename‘);

? ? if (sal1<2000) then

? ? dbms_output.put_line(‘less 2000‘);

? ? elsif (sal1>2000 and sal1<400) then

? ? dbms_output.put_line(‘between 2000 and 4000‘);

? ? elsif (sal1>400) then

? ? dbms_output.put_line(‘more 4000‘);

? ? else

? ? ? dbms_output.put_line(‘other...........‘);

? ? end if;

end;

?

--pl/sql语句里面的case语句

declare

? ? a number(2):=0;

begin

? ? a:=&a;

? ? case a

? ? ? when 10 then

? ? ? ? dbms_output.put_line(‘aaaaaaaaaaa‘);

? ? ? when 20 then

? ? ? ? dbms_output.put_line(‘bbbbbbbbbbbb‘);

? ? ? else

? ? ? ? dbms_output.put_line(‘other.....‘);

? ? end case; ? ?

end;

?

--pl/sql语句里面的loop语句

declare

? ? q number :=0;

begin

? ? loop

? ? ? q:=q+1;

? ? ? dbms_output.put_line(‘q=‘||q);

? ? ? exit when q=10;

? ? end loop;

end;

?

--使用if 结束的

declare

? ? q number :=0;

begin

? ? loop

? ? ? q:=q+1;

? ? ? dbms_output.put_line(‘q=‘||q);

? ? ? if q=10 then

? ? ? ? exit;

? ? ? end if;

? ? end loop;

end;

?

?

--使用 while 循环

declare

? ? ?q number :=0;

begin

? ? ?while(q<10)loop

? ? ? q:=q+1;

? ? ? dbms_output.put_line(‘q=‘||q);

? ? ?end loop;

end;

?

--使用 for循环 ?反向遍历 reverse

declare

begin

? ? ?for i in reverse 1..10 loop

? ? ? dbms_output.put_line(i); ?

? ? ?end loop;

end;

?

?

PLS_INTEGER和BINARY_INTENER唯一区别是在计算当中发生溢出时,BINARY_INTENER型的变量会被自动指派给一个NUMBER型而不会出错,PLS_INTEGER型的变量将会发生错误。

?

?

record ?定义类型

?

集合容器

index_by table

嵌套表

varray

type num_array is table of number(5) index by binary_integer;

?

?

单行单列 ?变量 varchar2 %type

单行多列 record

单列多行 集合 (type)

多行多列 集合(rowtype)

?

索引表的格式

type name is table of element_type index by key_type;

?

declare

? ? ?v_ename emp.ename%type;

? ? ?v_emp emp%rowtype;

begin

? ? ?select ename into v_ename from emp where empno=7369;

? ? ?select * into v_emp from emp where empno=7369;

? ? ?dbms_output.put_line(v_ename);

? ? ?dbms_output.put_line(v_emp.sal||‘ ?‘||v_emp.ename);

end;

?

--仅输出特殊的结构 ? 使用 record来定义

declare

? ??type emp_record is record(

? ? ? ? ?v_ename emp.ename%type,

? ? ? ? ?v_sal emp.sal%type,

? ? ? ? ?v_deptno emp.deptno%type

? ? );

? ? v_emp_record emp_record;

begin

? ? select ename,sal,deptno into v_emp_record from emp where empno=7369;

? ? --我也可以通过赋值语句修改里面的值

? ? v_emp_record.v_ename:=‘zhaan‘;

? ? dbms_output.put_line(v_emp_record.v_ename);

? ? dbms_output.put_line(v_emp_record.v_sal);

? ? dbms_output.put_line(v_emp_record.v_deptno);

end;

?

--

declare

? ? type num_array is table of number(5) index by binary_integer;

? ? a num_array;

begin

? ? for i in 1..10 loop

? ? ? a(i):=i;

? ? end loop;

? ? for i in 1..10 loop

? ? ? dbms_output.put_line(a(i));

? ? end loop;

end;

?

?

--例子一

declare

? ? type emp_array is table of emp%rowtype index by binary_integer;

? ? a emp_array;

begin

? ? select * bulk collect into a from emp;

? ? for i in a.first..a.last loop

? ? ? dbms_output.put_line(a(i).ename||‘ ?‘||a(i).job);

? ? end loop;

end;

--集合中装有集合

declare

? ? type record1 is record(

? ? ? ? ?vempno emp.empno%type,

? ? ? ? ?vename emp.ename%type,

? ? ? ? ?vsal ? emp.sal%type

? ? );

? ? type record2 is record(

? ? ? ? ?vdeptno emp.deptno%type,

? ? ? ? ?vrecord record1

? ? );

? ? a record1;

? ? b record2;

begin

? select empno,ename,sal into a from emp where empno=7369;

? b.vrecord:=a;

? dbms_output.put_line(b.vrecord.vempno);

? dbms_output.put_line(b.vrecord.vename);

? dbms_output.put_line(b.vrecord.vsal);

end;

--

declare

? ? type cc is table of varchar2(20) index by varchar2(20);

? ? a cc;

begin

? ? a(‘beijing‘):=‘china‘;

? ? a(‘dongjing‘):=‘japan‘;

? ? a(‘huashengdun‘):=‘usa‘;

? ? dbms_output.put_line(a(‘beijing‘));

end;

时间: 2024-08-29 06:45:41

学习pl/sql之一的相关文章

oracle学习-PL SQL 存储过程中循环、触发器

PL SPL 提供了3中不同类型的循环结构 -- 实例:索引 loop_counter从1开始,到10 结束,循环共执行10次 FOR loop_counter IN 1 .. 10 LOOP ...可执行语句... END LOOP; -- 索引loop_counter从10开始,到1结束,循环共执行10次: FOR loop_counter IN REVERSE 1 .. 10 LOOP ...可执行语句... END LOOP; -- 循环的执行范围取决于变量或者表达式的值: FOR ca

pl/sql编程

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

PL/SQL 编程

一.什么是pl/sql pl/sql(procedural language/sql)是Oracle在标准的sql语言上的扩展,pl/sql不仅允许嵌入Sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大. 二.pl/sql学习的必要性 1.提高应用程序的运行性能. 2.模块化的设计思想. 3.减少网络传输量. 4.提高安全性. 三.编写规范 1.注释 单行注释-- sql>select * from emp where empno

Oracle PL/SQL实战代码下载

最近在学习PL/SQL编程,算是一个进阶吧,书没带光盘,所以按照书中的地址去下载样例,无法下载,到图灵官网找到了源代码下载地址,无法下载的留邮箱,我发给大家 下载地址: http://www.ituring.com.cn/book/850 内容截图:

[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天才在于积累!) ——通过知识共享树立个人品牌.   继上七篇:            [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)            [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之

Oracle之PL/SQL学习笔记

自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家批评指正. PL/SQL定义:PL/SQL是由Oracle开发,专门用于Oracle的程序设计语言. PL---Procedural Language. SQL—Structure QueryLanguage.PL/SQL包括过程化语句和SQL语句     PL/SQL的单位:块. 一个块中可以嵌套

Oracle 学习笔记 17 -- 异常处理(PL/SQL)

程序在执行过程中出现异常是正常的,在程序的编写过程中出现异常也是不可避免的.但是要有相应的异常处理的机 制,来保证程序的正常执行.PL/SQL程序执行过程中出现的错误,称为异常.一个优秀的程序都应该能够正确处理 各种出错的情况,并尽可能的从错误中恢复.PL/SQL提供了异常处理机制. 概念: 异常处理(exception)是用来处理正常执行过程中未预料的事件,程序块的异常处理定义的错误和自定义的错误, 由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会异常的终止. 有三种类型的错误

Oracle学习(十一):PL/SQL

1.知识点:可以对照下面的录屏进行阅读 PL/SQL程序结构 declare 说明部分 (变量说明,光标申明,例外说明 ] begin 语句序列 (DML语句]- exception 例外处理语句 End; / ------------------------------------------------------------------ --第一个PL/SQL程序:HelloWorld set serveroutput on --如果要在屏幕上输出信息,需要将serveroutput开关打

PL/SQL学习礼记一 Bulk_Collect 调用方式集锦

事先申明,本文所有示例都皆源于<Expert PL SQL Practices>这本电子书的第六章.小陈觉得在学习PLSQL的过程中,将来或许会用到,在此笔记一番. 正文如下: 首先准备基础数据吧 HARDWARE 表. 表结构如图所示: 然后插入1,000,000条数据吧.这里不得不说,PLSQL里面,dual表的确帮助很大,当然T-SQL里面你也可以建一张辅助表的.这里用的Oracle SQL Developer自带的格式化功能,相当弱. INSERT INTO HARDWARE SELE