PLSQL 语句学习

学习PLSQL语句的目的;

让原本在应用程序的判断结果的代码,写成sql语句,从而提高应用程序的速度;

在于存储过程 和存储函数 还有触发器之前肯定要学习PLSQL;

提高操作oracle的速度和为之后做准备;

基本语法:

declare

  说明部分(变量说明、光标申明、例外说明)

begin

  语句序列(DML 语句)

exception

  例外处理语句

end;

/

打开输出开关;

set serveroutput on

/

什么是PL/SQL程序;

PL/SQL (Procedure Language/SQL);

PLSQL 是Oracle 对sql 语言的过程化扩展;

指在sql命令语言中增加了过程处理语句(如分支、循环等),使得SQL 语言具有过程处理能力。PLSQL 是面向过程的语言;

定义基本变量;

类型:char ,varchar2,date,number,boolean,long

特殊变量类型:

引用型变量:

my_name emp.name%type;

PLSQL语句支持SQL语句,PLSQL语句有两种赋值方式,一种是:= 另外一种是into  关键字;

select ename,sal into pername,psal from emp where empno=7839;

 SYS.DBMS_OUTPUT.PUT_LINE(pername||'dddddddpsal'||psal );

记录型类型:是行类型;取一行的类型作为我这个变量的类型;

举例说明:

emp_rec emp%rowtype;

记录型变量分量的引用;

emp_rec.ename :='ADMS';

if语句的使用;语法如下;

第一种写法:

IF 条件 THEN 语句1

语句2

end if;

第二种写法;

IF 条件 then 语句序列1

else 语句序列2

end if;

第三种写法:

IF 条件 THEN 语句

elseif 语句 then 语句;

else 语句

end if

循环语句:

while total <= 2333 LOOP

...

total:=total + salary;

END LOOP;

第二种循环语句:

Loop

EXIT [when 条件];

End loop

第三种:

FOR IN 1...4 LOOP

语句序列;

END LOOP;

光标:

在PL/SQL语句中 ,光标代表一个集合;也叫游标;

光标的语法:

CURSOR 光标名[参数名 数据类型[参数名 参数类型]  IS SELECT 语句;

从光标中取值;

open c1;(打开光标执行查询);

close c1(关闭光标)

fetch c1 into pename; (取一条记录);fetch 的作用:把当前指针指向的记录返回;将指针指向下一条记录;

光标的属性和光标数目限制;

属性:%found  %notfound  %isopen %rowcount(不是总行数,而是取走的行数));

修改光标数的限制: alter system set open_cursor = 400 scope=both;

scope 的取值:both memory spfile(数据库需要重启);

带参数的光标:

cursor cemp(dno number) is select ename from emp where deptno = dno;

打开光标的时候要把参数传递进去;

例外:

系统例外:No_date_found(没有找到数据);

Too_many_rows select...into 语句匹配多个行);

Timeout_on_resource (在等待资源时超时)

Value_error (算术或转换错误);

Zero_Divide (被零除);

自定义例外;

定义变量,类型是exception

使用raise 抛出自定义例外;

原文地址:https://www.cnblogs.com/zht0915/p/4763962.html