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、块block
1)概述
块是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为系统报错原因,根据异常原因,输出特定异常原因。

PL/SQL入门理解(一)的更多相关文章

  1. Oracle PL/SQL入门之慨述

    Oracle PL/SQL入门之慨述 一.PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言( ...

  2. PL/SQL 入门

    1. 概述 PL/SQL(Procedure Language/SQL)是 Oracle 对 sql 语言的过程化扩展,指在 SQL 命令语言中增加了 过程处理语句(如分支,循环等),使 SQL 语言 ...

  3. Oracle PL/SQL 入门

    PL/SQL 全称:Procedure Language/SQL.产生背景自己去百度. 模板: Declare ---变量定义 num ; name ) := 'damon'; idesc cnt_i ...

  4. Oracle PL/SQL入门语法点

    PL_SQL:带有分支和循环,面向过程匿名块:declare(可选,声明各种变量和游标的地方)begin(必要的,从此开始执行)exception(抓取到异常后执行的)end;[sql] view p ...

  5. PL/SQL入门随笔

    PL/SQL(Procedure Language/SQL) PLSQL是Oracle对sql语言的过程化扩展:在SQL命令语言中增加了过程处理语句(如分支.循环等),使SQL语言具有过程处理能力.S ...

  6. Oracle学习笔记之五,Oracle 11g的PL/SQL入门

    1. PL/SQL概述 PL/SQL(Procedural Language/SQL)是Oracle的专用语言,是对标准SQL语言的扩展,它允许在其内部嵌套普通的SQL语句,还可以定义变量和常量,允许 ...

  7. Oracle+PL+SQL从入门到精通.丁士锋.清华大学出版社.2012

    \t第1篇 pl/sql开发入门第1章 oracle 11g数据库系统1.1 关系型数据库系统介绍1.1.1 什么是关系型数据模型1.1.2 数据库系统范式1.1.3 关系型数据库管理系统1.1.4 ...

  8. PL/SQL基础语法入门

    先前安装了PL/SQL软件 PL/SQL全称为Procedural Language/SQL. PL/SQL也是一种程序语言,叫做过程化SQL语言,是Oracle数据库对SQL语句的扩展 打PL/SQ ...

  9. PL/SQL轻量版(一)——入门介绍

    一.概述 1.概念对比: SQL:结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目 ...

随机推荐

  1. 分离的思想结合单链表实现级联组件:CascadeView

    本文介绍自己最近做省市级联的类似的级联功能的实现思路,为了尽可能地做到职责分离跟表现与行为分离,这个功能拆分成了2个组件并用到了单链表来实现关键的级联逻辑,下一段有演示效果的gif图.虽然这是个很常见 ...

  2. C#获取图片的后缀名

    最近在学习过程中遇到一个问题,就是如何获取图片的格式,对于一张知道全路径的照片,如果其路径包含后缀名的话,要取得后缀名,只需要一行代码即可: var ext = System.IO.Path.GetE ...

  3. [WCF编程]13.并发:服务并发模式

    一.概述 传入的客户端调用消息会分发给Windows I/O线程池(线程默认为1000)上的服务实例.多个客户端可以发起多个并发的调用,并且服务可以在多个线程上处理这些请求.如果传入的调用分发给同一个 ...

  4. 详解SQLServer 存储过程

    Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量.条件执行和其他强大的编程功能. 存储过程相对于其 ...

  5. 除去String字符串里面指定的字符串

    主要用到String的两个方法,分别是subString(int len)或subString(int start,int end)和str.indexOf(String str1) 思路:先判断指定 ...

  6. Maven学习随笔二——Maven初始配置

    到现在为止,我对maven的理解是,跟svn差不多,帮我们管理项目的工具,到底是不是这样,拭目以待!! 弱弱解释,svn是什么? 简单的说,您可以把SVN当成您的备份服务器,更好的是,他可以帮您记住每 ...

  7. 字符编码笔记:ASCII,Unicode和UTF-8

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又做了一些可以处理 ...

  8. JQ中的方法、事件及动画

    css( ) 除了可以为元素添加样式外,还可用来查询元素,某样式值alert($('.cls1').css('width')); //100px(返回带单位的值)注意:原生CSS样式中有-的去掉并且将 ...

  9. 基本排序算法——冒泡排序java实现

    冒泡排序是原理最简单的一种排序算法,具体思想就不多说了,代码如下: eclipse4.3中编译通过 package sort.basic; import java.util.Arrays; publi ...

  10. SharePoint 2013 图文开发系列之InfoPath入门

    本文主要介绍SharePoint 2013中,简单发布InfoPath表单,并添加后台代码,示例比较简单,主要描述的是一个创建InfoPath的过程,而非多么深奥的后台代码,希望能够给初学者带来帮助. ...