Oracle存储过程基本写法
oracle 存储过程的基本语法
1.基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量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
xxxx;
END;
...
3.IF 判断
IF V_TEST=1 THEN
BEGIN
do something
END;
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.带参数的cursor
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(变量值);
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOTFOUND;
do something
END LOOP;
CLOSE C_USER;
8.用pl/sql developer debug
连接数据库后建立一个Test WINDOW
在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试
简单实例,通过DBMS_OUTPUT来看结果
CREATE OR REPLACE PROCEDURE bb (lic_para IN VARCHAR2,out_para OUT VARCHAR2)
AS
temp VARCHAR2 (100);
BEGIN
SELECT lic_no
INTO temp
FROM t_vehicle_info
WHERE lic_no = lic_para;
out_para:=temp;
DBMS_OUTPUT.put_line (out_para);
END bb;
下面是调用:
begin
-- Call the procedure
bb(lic_para => :lic_para,
out_para => :out_para);
end;
实例:
CREATE OR REPLACE PROCEDURE 要创建的存储过程名称 (
入参a IN VARCHAR2,
出参b out VARCHAR2
)
IS 变量c VARCHAR2 (2000) ;
变量d NUMBER (10) ;
异常变量e EXCEPTION ;
BEGIN
IF 入参a IS NULL THEN
raise 异常e ;
END IF ;// 跳到异常处理
FOR cc IN (select语句) LOOP // 执行sql
v_sql := 'select语句' ;
EXECUTE IMMEDIATE v_sql INTO v ;// 把查询的结果放到v中;
// sql查询,并放到v2中
SELECT
COUNT (*) INTO v2..; // 进行相关判断
IF v2 = 1 THEN
update、insert等操作 ;
END IF ;
END loop ;
COMMIT ;
MSG := 'success' ;
// 异常处理
EXCEPTION
WHEN NECE THEN
MSG := '入参a不能为空' ;
WHEN OTHERS THEN
MSG := sqlerrm ;
ROLLBACK ;
END 要创建的存储过程名称 ;
原文转载:https://www.cnblogs.com/chinafine/articles/1776085.html
Oracle存储过程基本写法相关推荐
- oracle存储过程(写法+实战)
1. 先看看oracle存储过程的格式: create or replace procedure p_add(num1 in number,num2 in number, result out num ...
- oracle存储过程游标写法,Oracle存储过程,游标使用
语法: CREATE [OR REPLACE] PROCEDURE procedure_name (arg1 [mode1] datatype1,arg2 [mode2] datatype2,...) ...
- oracle存储过程的写法
create or replace procedure 要创建的存储过程名称(入参a in varchar2, 出参b out varchar2) is变量c varchar2(2000);变量d n ...
- oracle存储过程写法 并行_oracle存储过程的写法
1.存储过程的基本语法: CREATE OR REPLACE PROCEDURE 存储过程名(param1 in type,param2 out type) IS 变量1 类型(值范围); 变量2 类 ...
- php oracle 存储过程 返回值,PHP 调用 Oracle 存储过程 之 查询
在网上找了很久都没找到结果,今天看帮助,结合JAVA程序中的一个实例,写出了这个PHP调用Oracle存储过程的例子,也许有人会说PHP调用存储过程是很简单的,但在这里我还是想把这点小成就拿来共享一下 ...
- Oracle存储过程日常工作整理写法实例
Oracle存储过程日常工作整理写法实例 create or replace package body CUX_HRMIS_SYNC_PKG is /* *-- Creation time:2016 ...
- Oracle存储过程(增、删、改)写法
工作上也没什么事情,一天都琐碎的事,空闲时间比较多,自己可以随意安排. 分析目前的形式,发现自己要学的东西真是太多了,都不知道要学什么好,例如:数据库.开发技术.管理--这些技术东西,一天一天都在更新 ...
- Oracle的存储过程基本写法
目录 1.1 Oracle存储过程简介: 1.2 创建存储过程的语法: 1.3 示范一些存储过程 1.3.1 不带参数的存储过程: 1.3.2 带参数的存储过程: 1.3.3 出现异常的输出存储过程: ...
- oracle存储过程建表写法,用oracle存储过程创建表
create or replace procedure createtable(tname in varchar2) is sqlTEXT varchar2(400); v_createsql var ...
最新文章
- CRT 入口函数 CRTStartup
- 深入认识javascript中的eval函数
- linux 关机 日志,centos7 异常关机了,怎么查看系统的异常日志?
- python语言数据挖掘python语言数据_Python语言数据挖掘01-环境搭建
- swing组建的层次
- 开放世界下的混合域适应 ——面向真实自然场景下的全新迁移学习范式
- 边开发就能边测试?一招教你在linux服务器配置Jenkins持续集成神器
- 在SQL2008中,如何让id自动生成并自动递增?如何让时间默认生成?
- python flask将读取的图片返回给web前端
- FME 应用cad处理
- java自动回复_java实现自动回复聊天机器人
- Python爬虫入门教程 97-100 帮粉丝写Python爬虫之【shuan色球预测前置条件】
- python你已经是个成熟的软件了_支付宝改自己还花呗表情包_你已经是个成熟的软件系列表情包大全_游戏吧...
- Ubuntu20.04 conda安出错,成功解决:solving environment:failed with initial frozen solve.Retrying with flexibl
- 数字电路74161(MN)
- delete mysql 语法_mysql delete where 语法无法使用
- android QVGA WQVGA HVGA VGA WVGA各个分辨率的区别
- 脑机实验室系列 | 浙大求是高等研究院脑机接口研究所
- 路由策略Routing Policy和策略路由PBR的区别
- 警灯,警铃四合一【Arduino玩具】