您的位置:首页 > 数据库

PL/SQL入门理解(一)

2015-11-08 19:03 204 查看
1、PL/SQL概述1)概念pl/sql(procedural language)是Oracle在标准sql语言的基础上的扩展,可以实现定义变量、使用逻辑控制语句等作用:默认oracle一次只能处理一条SQL语句,每条SQL语句都会向服务器发送请求调用,如果使用PL/SQL,一个块中的语句作为一个组,只向服务器发送一次请求调用,减少了网络传输,节省带宽,提高效率,提高安全性缺点:移值性差,只有oracle中可用2)组成pl/sql程序由块组成,由块可组成不同的程序形式,包括:匿名块、存储过程、函数、包、触发器等3)注释--单行注释/*多行注释*/4)命名当定义变量时,建议以v_作为前缀:v_name当定义常量时,建议以c_作为前缀:c_rate当定义过程时,建议以p_作为前缀当定义函数时,建议以fun_作为前缀当定义包时,建议以pac_作为前缀当定义游标时,建议以cur_作为前缀当定义例外时,建议以err_作为前缀
2、块block1)概述块是pl/sql的基本组成单元,编写pl/sql实际上就是块块由三部分组成:定义部分、执行部分、异常处理部分(例外处理部分)定义部分declare:定义变量、常量、复杂数据类型、游标、异常等,可选执行部分begin:要执行的sql语句或pl/sql语句,必选异常处理部分exception:用来处理运行时的各种错误,可选
以上为常规基础。。。。。。。。。。。。。。。。开始吧
例1:只包含执行部分的pl/sql块--打开输出,使pl/sql程序能够输出信息
set serveroutput on;(在Sqlplus中使用,用于打开oracle自带的输出方法dbms_output)

begin dbms_output.put_line('Hello Oracle!');end; 注:如果使用工具是类似sqlplus等终端工具以 /结束语句;(如下图)


例2:包含定义部分和执行部分的pl/sql块定义变量语法:变量名 [constant] 数据类型 [not null]为变量赋值:变量名:=变量值注:常量在声明时必须赋初始值


注:常量在声明时必须赋初始值(上图为变量赋值方法)
例3:包含定义部分和执行部分的pl/sql块,使用查询为变量赋值(表数据为Oracle下scott账户自带表)declare v_ename varchar2(20); v_empno number(4);begin v_empno:=&请输入雇员编号; select ename into v_ename from emp where empno=v_empno; dbms_output.put_line(v_empno||'的姓名:'||v_ename);end;注:红色部分为 提示输入数据,会根据使用平台的差异,提示方式不一样,所起到的效果类似于java下的Scanner提示输入。


例4:同时输出指定雇员的姓名和工资(查询多个值)declare v_ename varchar2(20); v_sal number(7,2);begin select ename,sal into v_ename,v_sal from emp where empno=&no; dbms_output.put_line(v_ename||','||v_sal);end;


注:into只能用于通过查询为变量赋值,对于增删改,需要使用returning into 赋值例5:插入一个部门,将插入的部门信息显示出来declare v_deptno number(4); v_dname varchar2(20); v_loc varchar2(30);begin insert into dept values (50,'Development','NanJing') returning deptno,dname,loc into v_deptno,v_dname,v_loc; dbms_output.put_line('编号:'||v_deptno||',名称:'||v_dname||',位置:'||v_loc);end;


获取插入值的方法。例6:包含定义部分、执行部分、异常处理部分的块(异常块处理)declare v_ename varchar2(20); v_sal number(7,2);begin select ename,sal into v_ename,v_sal from emp where empno=&no; dbms_output.put_line(v_ename||','||v_sal);exception --异常处理 when no_data_found then dbms_output.put_line('您查找的雇员不存在!');end;no_data_found为系统报错原因,根据异常原因,输出特定异常原因。

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: