pl/sql是什么?

pl/sql是oracle在标准sql语言上的扩展。不仅允许嵌入sql语言,还可以定义常量和变量,允许使用条件语句和循环语句,允许使用例外处理各种错误。

作用:过程,函数,触发器是用pl/sql编写的且存在于在oracle中,可以在java程序中调用,pl/sql强大的数据库过程语言。

1、创建一个表:

SQL> create table  mytest(name varchar2(30),passwd  varchar2(30));

2、创建过程

SQL> create procedure  sp_prol  is

begin

--执行部分

insert  into  mytest('hjadsfhas','sdkhfdsj');

end;

/

也可以使用(replace 表示如果有sp_prol就替换)

SQL> create   or  replace procedure  sp_prol  is
  2  begin
  3  --执行部分
  4  insert  into  mytest('hjadsfhas','sdkhfdsj');
  5  end;
  6  /

show  error ————————查看错误

正确的过程创建

SQL> create  or  replace  procedure sp_prol is 2  begin3  insert  into mytest values('hansjd','2sduf');4  end;5  /Procedure created

3、执行过程

exec  过程名;

①exec  过程名 (参数值1,参数值2,。。。)

②call  过程名(参数值1,参数值2,。。。)

4、删除过程

drop procedure  过程名

使用pl/sql编写模块时,pl/sql的基础单位是块 ,其包括过程(存储过程),函数,触发器,包

编写规范:

①注释

单行注释  — —

多行注释/*     */

②标识符号的命名规范

1、当定义变量时,建议使用v_为前缀,

2、定义常量时,建议使用c_为前缀

3、当定义游标时,使用_cursor作为后缀

4、定义例外时,使用e_为 前缀  e_error

图1

实例1—之包括执行部分的pl/sql块

set  serveroutput  on  ——打开输出选项

begin

dbms_output.put_line('hello');

end;

dbms_output是oracle所提供的包(类似于java的开发包),该包包含一些过程,put_line就是dbms_output包的一个过程。

案例:一

只包括执行部分的pl/sql块


SQL> begin2  dbms_output.put_line('hello  world!');3  end;4  /PL/SQL procedure successfully completed

当打开输出选项时:(就会在下面输出内容)

SQL> set serveroutput on;
SQL> begin 2  dbms_output.put_line('你好,智障!0_0');3  end;4  /你好,智障!0_0PL/SQL procedure successfully completed

案例:二

包含定义部分和执行部分的pl/sql

SQL> declare2  v_ename  varchar2(5);3  begin4  select ename into v_ename  from  emp  where  empno =&no;5  dbms_output.put_line('雇员名'||v_ename);6  exception 7  when  no_data_found  then 8  dbms_output.put_line('异常');9  end;10  /雇员名SCOTTPL/SQL procedure successfully completed
SQL> declare2  v_ename  varchar2(5);--定义字符串常量3  begin4           select ename into v_ename  from  emp where  empno=&no;--将查询的值传给v_ename  5           dbms_output.put_line('雇员名'||v_ename);--字符串连接||6  end;7  /

&:表示要接受从控制台输入变量

过程

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

实例:①可以输入雇员名,可以修改雇员的工资,新工资

PL/SQL procedure successfully completedSQL> create procedure sp_pro3(spName  varchar2,newSal  number)  is 2  begin3  update emp set  sal = newSal  where ename = spName;4  end;5  /
Warning: connection was lost and re-establishedProcedure created

SQL> exec sp_pro3('SCOTT',4768);PL/SQL procedure successfully completed

函数

用于返回特定数据,当建立函数时,在函数头部必须包含return子句,而在函数体内必须包含return语句返回的数据。

使用create  function  来建立函数,实际案例:

SQL> create  function sp_fun2(spName  varchar2)  return  2  number  is  yearSal  number(7,2);3  begin4  --执行部分5  select sal*12+nvl(comm,0)  into yearSal   from emp  where ename = spName;6  return yearSal;7  end;8  /

创建一个函数名为sp_fun2 ,输入sp_Name(形参),返回一个number  叫yearSal  类型为number(7,2);

函数的调用

SQL> var abc number;
SQL> call sp_function('SCOTT')  into:abc;
SQL>print abc

包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。

①使用create   package 命令来创建包:

SQL> create package sp_package is 2  procedure update_sal(name  varchar2,newsal  number);3  function annual_income(name  varchar2)  return  number;4  end;5  /

包的规范只包含了过程和函数的说明,但是没有过程和函数的实现代码,包体用于实现包规范中的过程和函数,

②建立包体:

使用create  package  body  命令

SQL> create   or replace package body sp_package is2   procedure  update_sal(name  varchar2,newsal number)3   is4   begin5   update emp  set sal=newsal where ename = name;6   end;7   function annual_income(name varchar2)8   return number  is9   annual_salary number;10   begin11   select  (sal+nvl(comm,0))*12   into annual_salary  from emp  where ename=name;12   return annual_salary;13    end;14    end;15   /Package body createdSQL> 

包的执行:

SQL> exec sp_package.update_sal('SCOTT',120);PL/SQL procedure successfully completedSQL> 

Oracle之pl/sql编程(一)函数,过程,包相关推荐

  1. Oracle之PL/SQL编程从入门到精通-文心-专题视频课程

    Oracle之PL/SQL编程从入门到精通-23941人已学习 课程介绍         本课程基于Oracle数据库,讲解PL/SQLl编程方面的技能,通过本课程的学习,学员能在短的时间内掌握Ora ...

  2. Oracle的PL/SQL编程前奏之基础技能实战一(匿名子程序)

    Oracle的PL/SQL编程之基础技能实战一 一>基础代码检查检查以bm_开头的系统初始化编码表是否有空值.与业务系统相关的编码项不能存在空值,会导致系统业务无法办理.为初始化数据表.在做测试 ...

  3. oracle pl/sql编程详细,Oracle框架:PL/SQL编程:

    PL/SQL编程 一:什么是PL/SQL (1.)PL/SQL体系结构: PL/SQL引擎用来编译和执行,PL/SQL块或子程序,该引擎驻留在Oracle服务器中. (2.)PL/SQL块简介 PL/ ...

  4. oracle快捷语句框架中,Oracle框架:PL/SQL编程:

    PL/SQL编程 一:什么是PL/SQL (1.)PL/SQL体系结构: PL/SQL引擎用来编译和执行,PL/SQL块或子程序,该引擎驻留在Oracle服务器中. (2.)PL/SQL块简介 PL/ ...

  5. Oracle的PL/SQL编程

    PL/SQL编程 基本语言风格 PL/SQL把SQL的数据操作功能同过程语言的数据处理功能结合起来. --声明作用 declare --变量.游标.用户自定义类型.异常 variables,curso ...

  6. 10、oracle下PL/SQL编程基础

    ORACLE下的PL/SQL编程基础 PL/SQL语言是程序化程序设计语言,块是PL/SQL编程中的基本结构,其优点在于支持SQL.支持面向对象编程.性能好.可移植性.与sql集成.安全性高等. 1. ...

  7. Oracle数据库PL/SQL块-存储函数和过程

    PL/SQL块 PL/SQL程序由三个块组成,即声明部分.执行部分.异常处理部分 结构如下: declare​ /*声明部分,在此声明变量,类型及游标*/begin​ /*执行部分,过程及sql语句, ...

  8. oracle if函数变量,Oracle数据库——PL/SQL编程

    PL/SQL块基本结构 declare -- 声明部分 begin -- 执行部分 exception -- 异常处理部分 end; 声明部分:包含变量.常量定义,由 declare 关键字开始,如果 ...

  9. 基于oracle 的PL/SQL编程 -变量使用

    1. 需要开启的服务:  本机安装的oracle ,默认是开机启动服务的,开机时间太慢,关闭了,需要手动打开: OracleDBConsoleorcl OracleOraDb10g_home1iSQL ...

最新文章

  1. ECCV2020 oral | 基于语义流的快速而准确的场景解析
  2. 交管123缴费显示代理服务器异常,交管12123服务异常怎样办 交管12123 APP服务异常处理办法...
  3. wifi一键配网smartconfig原理及应用
  4. Eclipse中导入外部jar包
  5. 中标麒麟linux系统忘记root密码,中标麒麟(龙芯CPU)--忘记root密码怎么修改?
  6. Android ViewGroup点击效果(背景色)
  7. TypeScript里的自定义类型用法
  8. 前端学习(3251):样式的模块化
  9. 关于win32与win64的兼容性问题
  10. 领域驱动设计的简略设计步骤
  11. UiModeManager设置夜间模式和行车模式
  12. 【转】超现实的经典语录
  13. 红帽linux中文系统下载iso,红帽子9.0版下载-redhat linux 9.0 iso下载 简体中文正式版-IT猫扑网...
  14. 说出来你可能不信,我用 Python 破解了微信聊天记录
  15. 家谱处理(30 分)(字符串的处理substr)
  16. uniapp小程序 安卓和ios时间兼容性问题解决方案
  17. 图片怎么转为html格式,ps图片怎么转换为html ps图片转换为html图文教程
  18. 从失业到年薪百万,被你忽略的“一技之长”正在膨胀!
  19. this.$watch(),this.$set(),this.$nextTick()={})
  20. HTML5的最简单模板

热门文章

  1. CSS动画效果构成分析
  2. 20200117:(leetcode)最长回文子串(暴力法)
  3. 截取文件最后10行_10 行 Python 代码自动清理电脑内重复文件,解放双手
  4. https访问报错404_电子口岸报关代理委托系统,出现“404”“503”报错怎么办?...
  5. 移动硬盘无法休眠了?
  6. vb一个使用URLDownloadToFile实现文件下载的类
  7. ※部分VB文章汇总B※
  8. Linux目录结构及解释
  9. VB:将数字转换为大写中文
  10. Redis实现计数器---接口防刷---升级版(Redis+Lua)