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存储过程的更多相关文章

  1. Oracle procedure存储过程/function函数

    --函数的创建 create function func1(dno number) return NUMBER--必须带有返回值 is v_max number;--定义返回值 begin selec ...

  2. oracle procedure存储过程(pl/sql)_使用declare cursor_begin end嵌套

    create or replace procedure PRO_DelArticles ( ArticleId in varchar2 ) is ArticleNum varchar2(20); sq ...

  3. Oracle job procedure 存储过程定时任务

    Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 ...

  4. 【转】Oracle job procedure 存储过程定时任务

    原文:Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相 ...

  5. Oracle job procedure 存储过程定时任务(转自hoojo)

    Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 ...

  6. Oracle在存储过程中如何返回结果集

    Oracle和Sqlserver不一样的地方有很多. 个人最深的体会是存储过程返回结果集,在Sqlserver中直接select查询就行,Oracle就不行了. 这里,就用最简单的例子说明存储过程返回 ...

  7. PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)

    (转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. ...

  8. 移植Oracle procedure 到 postgresql

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

  9. Oracle procedure 基本语法

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

随机推荐

  1. golang channle 管道

    管道的使用介绍 现在要计算 1-N 的各个数的阶乘,并且把各个数的阶乘放入到 map 中.最后显示出来.要求使用 goroutine 完成 package main import ( "fm ...

  2. [leetcode-108,109] 将有序数组转换为二叉搜索树

    109. 有序链表转换二叉搜索树 Given a singly linked list where elements are sorted in ascending order, convert it ...

  3. 【Unity3d游戏开发】Unity中的Time.timeScale

    马三最近在做一款游戏的时候涉及到了“加速”和“暂停”这两个功能,我第一时间就想到了应该用 Time.timeScale.当暂停的时候,设置timeScale = 0,当需要加速的时候,将 timeSc ...

  4. Spring boot 使用多个RedisTemplate

    问题描述 想在一个JAVA Class 向同一个Redis实例的不同 dbindex 写入数据,非常类似于StackOverflowe上的[How can select dbIndex when I ...

  5. 使用模拟Table解决span重叠问题

    <div id="test"> <div > <span>adfafadsfadfa</span> <span style=& ...

  6. Left join update和 ROW_NUMBER

    (1)Left join 更新update a set a.name=b.name from a left join b on a.id=b.stuid(2)ROW_NUMBERselect ROW_ ...

  7. HDB3编码器

    一.HDB3 码介绍 三阶高密度双极性码(英语:High Density Bipolar of Order 3 code,简称:HDB3码)是一种适用于基带传输的编码方式.它是一种 AMI 码的改进型 ...

  8. memset赋值

    比较神奇的事情 可能和二进制有关系吧 #include<bits/stdc++.h> using namespace std; ]; int main(){ memset(f,,sizeo ...

  9. MVC中的分部视图

    背景: 项目的工期马上就要到了,由于后台封装的很好,我们只需要用心熟悉框架,接下来后台的工作就是简单的代码工作了.原本以为最困难的时期已经过去,可没想到前台才是最困难的. B/S的基础十分薄弱,加上B ...

  10. Debian Security Advisory(Debian安全报告) DSA-4412-1 drupal7 security update

    Debian Security Advisory(Debian安全报告) DSA-4412-1 drupal7 security update Package:drupal7 CVE ID:暂无 Dr ...