1、定义

  所谓存储过程(Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过

  编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数

  来调用并执行它,从而完成一个或一系列的数据库操作。

  2、存储过程的创建

  Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。

  3. 使用存储过程的好处:

  1.简化复杂的操作

  2.增加数据的独立性

  3.提高安全性

  4.存储过程的语法

  CREATE [OR REPLACE] PROCEDURE procedure_name [in | out | in out datatype]

  IS|AS

  <声明部分>

  begin

  <执行部分>

  exception

  <异常部分>

  end;

  4.1无参数的存储过程:

  create or replace procedure p_test1 as

  begin

  for i in (select slbh,bdczh from dj_djb where slbh like '20170825%') loop

  dbms_output.enable(buffer_size=>null);

  dbms_output.put_line(i.slbh||','||i.bdczh);

  end loop;

  end;

  复制代码

  begin

  p_test1;

  end;

  4.2.有参的存储过程:

  4.2.1.参数名 IN 数据类型 DEFAULT 值;

  定义一个输入参数变量,用于传递参数给存储过程。在调用存储过程时,主程序的实际参数可以是常量、有值变量或表达式等。DEFAULT 关键字为可选项,用来设定参数的默认值。如果在调用存储过程时不指明参数,则参数变量取默认值。在存储过程中,输入变量接收主程序传递的值,但不能对其进行赋值。

  ege:

  create or replace procedure p_test2 (v_slbh in varchar2 default 201711010025 )

  as

  v_bdczh dj_djb.bdczh%type;

  begin

  select bdczh into v_bdczh from dj_djb where slbh =v_slbh;

  dbms_output.put_line(v_bdczh);

  end;

  复制代码

  4.2.2.参数名 OUT 数据类型;

  定义一个输出参数变量,用于从存储过程获取数据,即变量从存储过程中返回值给主程序。

  在调用存储过程时,主程序的实际参数只能是一个变量,而不能是常量或表达式。在存储过程中,参数变量只能被赋值而不能将其用于赋值,在存储过程中必须给输出变量至少赋值一次。

  ege:

  create or replace procedure p_test3 (v_slbh varchar2 default 201711010025,v_bdczh out varchar2)

  as

  begin

  select bdczh into v_bdczh from dj_djb where slbh=v_slbh;

  dbms_output.put_line(v_slbh||','||v_bdczh);

  end ;

  ....调用.......

  declare

  v_1 dj_djb.bdczh%type;

  begin

  p_test3(v_bdczh=>v_1);

  end;

  复制代码

  4.2.3.参数名 IN OUT 数据类型 DEFAULT 值;

  定义一个输入、输出参数变量,兼有以上两者的功能。在调用存储过程时,主程序的实际参数只能是一个变量,而不能是常量或表达式。DEFAULT 关键字为可选项,用来设定参数的默认值。在存储过程中,变量接收主程序传递的值,同时可以参加赋值运算,也可以对其进行赋值。在存储过程中必须给变量至少赋值一次。

  注:如果省略IN、OUT或IN OUT,则默认模式是IN。

  5.查看存储过程错误原因:

  select * from user_errors where name=upper(‘p_test1’);

  by wolihaito 2018.03.26

  复制代码(编辑:雷林鹏 来源:网络)

Oracle Procedure记录的更多相关文章

  1. 项目中oracle存储过程记录——经常使用语法备忘

    项目中oracle存储过程记录--经常使用语法备忘 项目中须要写一个oracle存储过程,需求是收集一个复杂查询的内容(涉及到多张表),然后把符合条件的记录插入到目标表中.当中原表之中的一个的日期字段 ...

  2. 移植Oracle procedure 到 postgresql

    1.登录postgresql psql -h 192.168.137.131 -p 5432 postgres satusc@6789#JKL 2.创建用户 CREATE USER name thun ...

  3. Oracle procedure 基本语法

    转自:http://lorry1113.javaeye.com/blog/513851 关键字: oracle 存储过程 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程 ...

  4. (转载)Oracle procedure 基本语法

    转自:http://www.cnblogs.com/wolfplan/p/4004624.html 关键字: oracle 存储过程 1.基本结构 CREATE OR REPLACE PROCEDUR ...

  5. ASP.NET操作Oracle知识记录(采用ODP.NET)

    最近因为要把以前做的一个项目数据库从MSSQL2005转移到Oracle上,所以开始接触Oracle,通过本篇随笔简单记录一些ASP.NET结合Oralce的操作: 因为微软未来不再支持 System ...

  6. Oracle学习记录1

    1.current_date与sysdate区别 在oracle中current_date与sysdate都是显示当前系统时间, 其结果基本相同,但是有三点区别:a. current_date返回的是 ...

  7. Oracle使用记录

    1.连接数据库的方式 sqlplus system/system@127.0.0.1:1521/orcl #远程用户名密码连接 sqlplus dbsnmp/oracle; #本地用户名密码连接 sq ...

  8. ORACLE百万记录SQL语句优化技巧

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  9. Oracle存储过程记录异常

    --建立错误日志表 create table PUB_PROC_ERR_LOG ( LOG_ID NUMBER, MODULE_NAME ), PROC_NAME ), ERR_TIME DATE, ...

随机推荐

  1. java 多线程 day10 获取线程的返回值 CallableAndFuture

    import java.util.Random;import java.util.concurrent.*; /** * Created by chengtao on 17/12/4. * * 获取线 ...

  2. Jmeter(十)Linux下配置安装Jmeter及执行测试任务

    一.安装JDK7.0版本 1.先卸载服务器自带的jdk软件包 # java -version #查看服务器是否安装过 # rpm -qa |grep gcj #查看服务器安装的jdk软件包信息 # y ...

  3. docker——数据管理

    生产环境中使用docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享.容器中管理数据主要有两种方式: 数据卷(Date Volumes):容器内数据直接映射到本地环境 数据 ...

  4. CCF 字符串匹配(find()函数的使用)

    问题描述 试题编号: 201409-3 试题名称: 字符串匹配 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你 ...

  5. jq--ajax中止请求

    比如我后端设置延迟3s再响应给前端,我用的是node之koa2 router.get('/vueDemo/getStudents', async ( ctx ) => { //延迟3s asyn ...

  6. Python3 计算城市距离

    利用上一篇得到的城市经纬度算城市距离 import requests from math import radians, cos, sin, asin, sqrt def geocode(addres ...

  7. sgu 101 Domino 解题报告及测试数据

    101. Domino time limit per test: 0.25 sec. memory limit per test: 4096 KB 题解: 求多米诺骨牌按照一定方式放置能否使相邻的位置 ...

  8. TOSCA自动化测试工具ppt(正在整理)

    1.  认识TOSCA 安装使用 2.  TOSCA自动化测试工具的优点 1).  可扩展 Tosca Commander™ functionalities can be extended by us ...

  9. ipython安装(python3.6.1)

    之前一直是在Python2.7环境下装的ipython,今天想在Python3环境下安装,主要是为了方便测试,按tab键可以补全,显示导入模块的方法. 1.首先安装Python3.6.1 wget h ...

  10. mongo启动

    mongo启动 删除data目录里的mongo.lock bin 目录里执行 net  start MongoDB