oracle存储过程 --1
一,oracle存储过程语法
1.oracle存储过程结构
CREATE OR REPLACE PROCEDURE oracle存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
END oracle存储过程名字
2.无返回值的oracle存储过程
create or replace procedure xs_proc_no is
begin
insert into xuesheng values (3, 'wangwu', 90, 90);
commit;
end xs_proc_no;
3.有单个数据值返回的oracle存储过程
create or replace procedure xs_proc(temp_name in varchar2,
temp_num out number) is
num_1 number;
num_2 number;
begin
select yu_wen, shu_xue
into num_1, num_2
from xuesheng
where xing_ming = temp_name;
--dbms_output.put_line(num_1 + num_2);
temp_num := num_1 + num_2;
end;
其中,以上两种与sql server基本类似,而对于返回数据集时,上述方法则不能满足我们的要求。在Oracle中,一般使用ref cursor来返回数据集。示例代码如下:
4.有返回值的oracle存储过程(列表返回)
首先,建立我们自己的包。并定义包中的一个自定义ref cursor
create or replace package mypackage as
type my_cursor is ref cursor;
end mypackage;
在定义了ref cursor后,可以书写我们的程序代码
create or replace procedure xs_proc_list(shuxue in number,
p_cursor out mypackage.my_cursor) is
begin
open p_cursor for
select * from xuesheng where shu_xue > shuxue;
end xs_proc_list;
5.SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
记录,否则抛出异常(若没有记录则抛出NO_DATA_FOUND)
例子:
BEGIN
SELECT name,age into 变量1,变量2 FROM user where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END;
...
6.IF 判断
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;
7.WHILE 循环
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;
8.变量赋值
V_TEST := 123;
9.用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;
10.带参数的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;
11.用pl/sql developer debug
连接数据库后建立一个Test WINDOW
在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试
二,oracle存储过程的若干问题备忘
1.在oracle中,表别名不能加as,如:
select a.name from user a;-- 正确
select a.name from user as a;-- 错误
转载于:https://www.cnblogs.com/mr-hero/p/3489851.html
oracle存储过程 --1相关推荐
- Oracle 存储过程 无法编译 解决方法(转载)
声明:本文为转载,如果有侵犯知识版本,请通知本人,本人将即刻停止侵权行为: http://blog.csdn.net/tianlesoftware/article/details/7412555 Or ...
- oracle字段大段字符串,ORACLE存储过程,参数目字符串太长
ORACLE存储过程,参数字符串太长 在做存储过程开发的时候,需要拼SQL语句,比如 DECLARE V_SQL VARCHAR2(32000); BEGIN V_SQL := 'INSERT INT ...
- 存储过程while_超详细的Oracle存储过程基础入门介绍
概述 前面已经对存储过程.函数.包做了个介绍,但是毕竟是写成了一篇,所以没那么细,今天单独介绍一下存储过程基础方面,后面再说遍历什么游标啊,数组啊~ 1.语法 CREATE [OR REPLACE] ...
- [转]oracle 存储过程的基本语法 及注意事项
oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) ...
- oracle存储过程、声明变量、for循环|转|
oracle存储过程.声明变量.for循环 1.创建存储过程 create or replace procedure test(var_name_1 in type,var_name_2 out ty ...
- mybatis调用oracle存储过程
有输入与输出参数的存储过程 oracle存储过程部分代码: create or replace procedure PT_copy_Shipment_One_Data( oldShipmentId i ...
- Oracle --存储过程,输入不定个数参数
2019独角兽企业重金招聘Python工程师标准>>> 一般来说,写存储过程时,输入的参数个数是固定的,但最近业务需求,输入的参数不固定. 思路:oracle存储过程的输入参数个数. ...
- Oracle存储过程中异常Exception的捕捉和处理
Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...
- [oracle] Oracle存储过程里操作BLOB的字节数据的办法,例如写入32位整数
作者: zyl910 一.缘由 BLOB是指二进制大对象,也就是英文Binary Large Object的缩写. 在很多时候,我们是通过其他编程语言(如Java)访问BLOB的字节数据,进行字节级的 ...
- oracle存储过程参考资料(网上转载)
网址一:http://www.cnblogs.com/hero4china/articles/base_rule_oracle_procedure.html 给朋友讲解oracle proc的记录: ...
最新文章
- v2视频服务器退出系统怎么启动,V2视频会议系统入门操作手册.doc
- 不出声也能命令Siri!康奈尔大学华人团队开发无声语言识别项链,中文英文都行...
- C#编写Windows服务程序图文教程
- 【C/C++】运算结果出现1.#Q0问题分析
- 老板的表弟数不清(转)
- android内存优化发展——使用软引用
- 线性回归公式推导与代码实现
- oracle自定义排序规则_Excel的排序方法,你会几种?
- Atitit java支持php运行环境 Quercus jar 1.1. Quercus	1 1.2. Web.xml 增加php servlet拦截	1 1.3. Phpinfo。php测试	1
- erc20钱包下载_Newdex实用贴:如何把ERC20上的KEY转换到Newdex交易
- 远程连接工具rdcman
- Unity 3D 2022.1 AND UnityHub 3.2 Patch
- 以逗号分割数组并且去除数组最后得空数据
- 财会法规与职业道德【1】
- 秀米怎么添加附件链接,如Word、Excel、Pdf等
- 笔记本键盘输入错乱,字母都变成数字了
- 电线超负荷的危险与原因
- 用vue自己封装一个分页组件
- C#用于登录数据库的方法
- java面试题-需要背的内容
热门文章
- Java 习题(面向对象)
- java button 圆角_UIButton具有渐变边框和圆角
- python执行文件函数,python如何运行函数
- 较简单的字节输入流输出流拷贝文件
- 计算机管理 内存在哪里看,教您win7怎么查看内存
- java math 函数_Java中Math类常用函数总结
- Pandas数据排序——【按索引排序sort_index()方法、按值排序sort_value()方法】
- 外挂编程-动作模拟技术
- C++笔试记录 2021年9月16日
- linux查看内核版本信息