oracle procedure存储过程
1、基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS/AS 变量1 INTEGER :=0;
变量2 DATE; BEGIN
.
.
.
END 存储过程名字
2、SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列(字段)存储到多个变量中,必须有一条记录,否则抛出异常(如果没有记录,抛出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
ROLLBACK;
RAISE;
END;
3、IF判断
IF 条件1 THEN
Do Someting
ELSIF 条件2 THEN
Do Someting
ELSIF 条件3 THEN
Do Someting
ELSE
Do Someting END IF;
4、while循环
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;
5、变量赋值
V_TEST := 123;
6、用for in使用cursor(游标)
...
IS
CURSOR cur IS SELECT * FROM xxx;
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1+cur_result.列名2
END;
END LOOP;
END;
7、用pl/sql developer debug
连接数据库后建立一个Test Window
在窗口输入调用SP的代码,F9开始Debug,CTRL+N单步调试
注意事项:
1)存储过程参数不带取值范围,in表示传入,out表示输出;
2)变量可带取值范围,后面接分号;
3)在判断语句前最好先用count(*)函数判断是否存在该条操作记录
4)用select...into...给变量赋值
5)在代码中抛出异常用RAISE;通常的用法:
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
/*
异常分很多类,如NO_DATA_FOUND。OTHERS处本应该写异常名称,如果不想把异常分得那么细,可以笼统一点用OTHERS来捕获,即所有异常均用OTHERS来捕获。
WHEN OTHERS THEN 表示是其它异常。
RAISE表示抛出异常,让User可以看到。
*/
6)AS/IS的区别
在试图(VIEW)中只能用AS不能用IS
在游标(CURSOR)中只能用IS不能用AS
7)输出变量赋值有两种,一种是直接:=,还有一种就是SELECT INTO
8)显示调试信息
a.存储过程中在必要的位置添加
DBMS_OUTPUT.put_line('HI');
b.打开DBMS_OUTPUT
show serveroutput;
set serveroutput on;
9)删除PROCEDURE
DROP PROCEDURE procedure_name;
oracle procedure存储过程的更多相关文章
- Oracle procedure存储过程/function函数
--函数的创建 create function func1(dno number) return NUMBER--必须带有返回值 is v_max number;--定义返回值 begin selec ...
- oracle procedure存储过程(pl/sql)_使用declare cursor_begin end嵌套
create or replace procedure PRO_DelArticles ( ArticleId in varchar2 ) is ArticleNum varchar2(20); sq ...
- Oracle job procedure 存储过程定时任务
Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 ...
- 【转】Oracle job procedure 存储过程定时任务
原文:Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相 ...
- Oracle job procedure 存储过程定时任务(转自hoojo)
Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 ...
- Oracle在存储过程中如何返回结果集
Oracle和Sqlserver不一样的地方有很多. 个人最深的体会是存储过程返回结果集,在Sqlserver中直接select查询就行,Oracle就不行了. 这里,就用最简单的例子说明存储过程返回 ...
- PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)
(转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. ...
- 移植Oracle procedure 到 postgresql
1.登录postgresql psql -h 192.168.137.131 -p 5432 postgres satusc@6789#JKL 2.创建用户 CREATE USER name thun ...
- Oracle procedure 基本语法
转自:http://lorry1113.javaeye.com/blog/513851 关键字: oracle 存储过程 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程 ...
随机推荐
- 5、JPA-映射-单向多对一
多个订单对应一个用户 实体类 Customer package com.jpa.yingshe; import javax.persistence.*; @Table(name = "JPA ...
- Github/github 初始化教程
注: 由于将项目迁移到gitee,克隆gitee 的时候出现了问题.不得已,重新配置 ref : https://blog.csdn.net/jingtingfengguo/article/detai ...
- 2018牛客网暑期ACM多校训练营(第一场)E Removal(DP)
题意 给你一个大小为n的数组,你可以删掉数组中的任意m个数,问你在删除m个数之后剩下的数组有多少种.(其中数组的每个数的大小<=k) 分析 显然需要动态规划,而k又很小,所以二维dp没问题. 设 ...
- extern "C" 含义
extern "C" 被 extern 限定的函数或变量是 extern 类型的 被 extern "C" 修饰的变量和函数是按照 C 语言方式编译和链接的 e ...
- Shell编程(四)Shell变量
1. 自定义变量(仅在当前shell生效) 1.1 定义变量 #!/usr/bin/bash ip=115.239.210.27 if ping -c1 $ip &>/dev/null ...
- 【转载】详解KMP算法
网址:https://www.cnblogs.com/yjiyjige/p/3263858.html
- PHP操作实现一个多功能购物网站
PHP操作实现一个多功能购物网站 一.需要实现的页面: Index.aspx:浏览商品页面,显示商品列表,用户可以点击“加入购物车“. ViewCart.aspx:查看购物车页面,显示已购买的商品信息 ...
- ROI Pooling层详解
目标检测typical architecture 通常可以分为两个阶段: (1)region proposal:给定一张输入image找出objects可能存在的所有位置.这一阶段的输出应该是一系列o ...
- tensorflow的特征工程函数
1. # creates a real valued column for dense numeric data tf.contrib.layers.real_valued_column( co ...
- Java SE之XML<二>XML DOM与SAX解析
[文档整理系列] Java SE之XML<二>XML DOM与SAX解析 XML编程:CRUD(Create Read Update Delete) XML解析的两种常见方式: DOM(D ...