Oracle 简单的创建一个存储过程procedure

如果学过别的语言,例如java,c这些,那么其实很好理解,其实就是面向数据库的操作

简单的例子如下:

--创建或者重写存储过程
create or replace procedure test_procedure(
p_test1 Integer--输入参数
) as --游标,select不需要into,游标是位于内存的数据集,加快数据操作,可以提升sql执行效率
cursor maindata is
select a.test3,a.test4
from table2 a, table3 o
where a.test2 = o.test2; --定义不同类型的变量,需要什么就定义出什么,变量名最好有独特性
p_integer integer;
p_varchar2 varchar2(50);
p_number number(9, 6);
p_date date; begin --for循环,对select的结果进行行遍历,遍历每条记录,使用select不需要into
for fc in (select o.test2
from table1 o
where o.test1 = p_test1) loop --for循环,对游标进行展开
for fcc in maindata loop --普通的select要用into,要将数据存储在变量中进行操作,注意,只有单行数据,多行会报错
select t.num1
into p_number
from table4 t
where t.num1 = '1'; --插表,select不需要into,在存储过程没有结束前不会commit,也可以再后面加上commit提前commit结束事务
insert into table_log
(test1,test2,test3,num1)
(select fc.test2,
fcc.test3,
fcc.test4,
p_number
from dual); end loop;--结束循环 end loop; --if判断
if p_number > 0 then --打印数据在PL/SQL控制台
dbms_output.put_line('料号:' || sUserCode.itemcode || '组织:' ||sUserCode.invorgid); select it.num1
into p_number
from table4 it
where it.num1 = '2'; end if; --异常
exception
WHEN others THEN
rollback;
dbms_output.put_line('ERROR异常:' || SQLERRM); end;

游标的使用有很多种

常用的有两种,一种是例子中的使用for展开

另一种是OPEN CLOSE的形式展开

  OPEN maindata;
LOOP
FETCH maindata
INTO r;
EXIT WHEN maindata%notfound; XXX; END LOOP;
CLOSE c;

如果想把数据放在临时表中,在PL/SQL中,可以

--定义一个临时表
TYPE g_tbl IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER;
;
--定义一个变量
v_tbl g_tbl;
;
--for循环存数据
FOR r_v_tbl IN 游标或(select语句) LOOP
v_tbl(i) := r_v_tbl.value;
i := i + 1;
end loop;

Oracle SQL 创建一个简单的存储过程procedure的更多相关文章

  1. mysql 如何创建一个简单的存储过程

    1 用mysql客户端登入2 选择数据库 mysql>use test3 查询当前数据库有哪些存储过程 mysql>show procedure status where Db='test ...

  2. SQL点滴28—一个简单的存储过程

    原文:SQL点滴28-一个简单的存储过程 在表中写入一条数据同事要向另外一个表中写入信息,所以会使用到事务.实际使用的时候还会一次向一个表中吸入多条数据,下面的存储过程,将字符串拆分成数组然后写入到表 ...

  3. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)(代码篇)

    这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia ...

  4. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  5. 用django创建一个简单的sns

    用django创建一个简单的sns 1.首先创建一个工程newsns django-admin.py startproject newsns 在工程目录下新建一个文件夹templates,在该文件夹下 ...

  6. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(三)(错误整理篇)

    使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二) 以上两篇已经把流 ...

  7. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)

    梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查 ...

  8. 如何创建一个简单的Visual Studio Code扩展

    注:本文提到的代码示例下载地址>How to create a simple extension for VS Code VS Code 是微软推出的一款轻量级的代码编辑器,免费,开源,支持多种 ...

  9. 如何创建一个简单的C++同步锁框架(译)

    翻译自codeproject上面的一篇文章,题目是:如何创建一个简单的c++同步锁框架 目录 介绍 背景 临界区 & 互斥 & 信号 临界区 互斥 信号 更多信息 建立锁框架的目的 B ...

  10. Windows 8.1 应用再出发 (WinJS) - 创建一个简单项目

    前面几篇我们介绍了如何利用 C# + XAML 完成Windows Store App 功能的实现,接下来的几篇我们来看看如何利用 Html + WinJS 来完成这些功能. 本篇我们使用WinJS ...

随机推荐

  1. vscode 翻译插件推荐 Easy Translator,只因为有音标,和位置好

    vscode 翻译插件推荐 Easy Translator,只因为有音标,和位置好

  2. 基于python的wav转txt的源码

    最近在做一个算法的时候,用到了这个转换,这里做一个备忘,希望能给你提供价值. import wave import matplotlib.pyplot as plt import numpy as n ...

  3. day08-2-Thymeleaf

    服务器渲染技术-Thymeleaf 1.基本介绍 官方在线文档:Read online 文档下载:Thymeleaf 3.1 PDF, EPUB, MOBI Thymeleaf 是什么 Thymele ...

  4. jQury(事件及其他方法)

    一. jQuery 事件注册 单个事件注册 语法: element.事件(function(){}) $("div").click(function(){ 事件处理程序 }) 其他 ...

  5. View之Canvas,Paint,Matrix,RectF等介绍

    目录介绍 1.Paint画笔介绍 1.1 图形绘制 1.2 文本绘制 2.Canvas画布介绍 2.1 设置属性 2.2 画图[重点] 2.3 Canvas对象的获取方式 2.4 Canvas的作用 ...

  6. 记录--Vue 3 中的极致防抖/节流(含常见方式防抖/节流)

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 今天给大家带来的是Vue 3 中的极致防抖/节流(含常见方式防抖/节流)这篇文章,文章中不仅会讲述原来使用的防抖或节流方式,还会带来新的一 ...

  7. Windows下获取设备管理器列表信息-setupAPI

    背景及问题: 在与硬件打交道时,经常需要知道当前设备连接的硬件信息,以便连接正确的硬件,比如串口通讯查询连接的硬件及端口,一般手工的方式就是去设备管理器查看相应的信息,应用程序如何读取这一部分信息呢, ...

  8. 腾讯tvp之路

    王清培 腾讯tvp之路

  9. 简直了,被“Java并发锁”问题追问到自闭...

    故事 地铁上,小帅双目空洞地望着窗外...绝望,发自内心地感到绝望... 距离失业已经过去两个月了,这是小帅接到的第四次面试邀请."回去等通知吧...",简简单单的六个字,把小帅的 ...

  10. Log4Net使用示例

    <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSe ...