Oracle 存储过程总结(一、基本应用)

Oracle 存储过程总结 基本应用技巧,大家可以学习下oracle存储过程最基本的东西。

1、创建存储过程
create or replace procedure test(var_name_1 in type,var_name_2 out type) as
–声明变量(变量名 变量类型)
begin
–存储过程的执行体
end test;
打印出输入的时间信息
E.g:
create or replace procedure test(workDate in Date) is
begin
dbms_output.putline(‘The input date is:’||to_date(workDate,’yyyy-mm-dd’));
end test;
2、变量赋值
变量名 := 值;
E.g:
create or replace procedure test(workDate in Date) is
x number(4,2);
begin
x := 1;
end test;
3、判断语句:
if 比较式 then begin end; end if;
E.g
create or replace procedure test(x in number) is
begin
if x >0 then
begin
x := 0 – x;
end;
end if;
if x = 0 then
begin
x: = 1;
end;
end if;
end test;
4、For 循环
For … in … LOOP
–执行语句
end LOOP;
(1)循环遍历游标
create or replace procedure test() as
Cursor cursor is select name from student; name varchar(20);
begin
for name in cursor LOOP
begin
dbms_output.putline(name);
end;
end LOOP;
end test;
(2)循环遍历数组
create or replace procedure test(varArray in myPackage.TestArray) as
–(输入参数varArray 是自定义的数组类型,定义方式见标题6)
i number;
begin
i := 1; –存储过程数组是起始位置是从1开始的,与java、C、C++等语言不同。因为在Oracle中本是没有数组的概念的,数组其实就是一张
–表(Table),每个数组元素就是表中的一个记录,所以遍历数组时就相当于从表中的第一条记录开始遍历
for i in 1..varArray.count LOOP
dbms_output.putline(‘The No.’|| i || ‘record in varArray is:’||varArray(i));
end LOOP;
end test;
5、While 循环
while 条件语句 LOOP
begin
end;
end LOOP;
E.g
create or replace procedure test(i in number) as
begin
while i begin
i:= i + 1;
end;
end LOOP;
end test;
6、数组
首先明确一个概念:Oracle中本是没有数组的概念的,数组其实就是一张表(Table),每个数组元素就是表中的一个记录。
使用数组时,用户可以使用Oracle已经定义好的数组类型,或可根据自己的需要定义数组类型。
(1)使用Oracle自带的数组类型
x array; –使用时需要需要进行初始化
e.g:
create or replace procedure test(y out array) is
x array;
begin
x := new array();
y := x;
end test;
(2)自定义的数组类型 (自定义数据类型时,建议通过创建Package的方式实现,以便于管理)
E.g (自定义使用参见标题4.2) create or replace package myPackage is
— Public type declarations type info is record( name varchar(20), y number);
type TestArray is table of info index by binary_integer; –此处声明了一个TestArray的类型数据,其实其为一张存储Info数据类型的Table而已,及TestArray 就是一张表,有两个字段,一个是
name,一个是y。需要注意的是此处使用了Index by binary_integer 编制该Table的索引项,也可以不写,直接写成:type TestArray is
table of info,如果不写的话使用数组时就需要进行初始化:varArray myPackage.TestArray; varArray := new myPackage.TestArray();
end TestArray;
7.游标的使用 Oracle中Cursor是非常有用的,用于遍历临时表中的查询结果。其相关方法和属性也很多,现仅就常用的用法做一二介绍:
(1)Cursor型游标(不能用于参数传递)
create or replace procedure test() is
cusor_1 Cursor is select std_name from student where …; –Cursor的使用方式1 cursor_2 Cursor;
begin
select class_name into cursor_2 from class where …; –Cursor的使用方式2
可使用For x in cursor LOOP …. end LOOP; 来实现对Cursor的遍历
end test;
(2)SYS_REFCURSOR型游标,该游标是Oracle以预先定义的游标,可作出参数进行传递
create or replace procedure test(rsCursor out SYS_REFCURSOR) is
cursor SYS_REFCURSOR; name varhcar(20);
begin
OPEN cursor FOR select name from student where … –SYS_REFCURSOR只能通过OPEN方法来打开和赋值
LOOP
fetch cursor into name –SYS_REFCURSOR只能通过fetch into来打开和遍历 exit when cursor%NOTFOUND; –SYS_REFCURSOR中可使用三个状态属性: —%NOTFOUND(未找到记录信息) %FOUND(找到记录信息) —%ROWCOUNT(然后当前游标所指向的行位置)
dbms_output.putline(name);
end LOOP;
rsCursor := cursor;
end test;
下面写一个简单的例子来对以上所说的存储过程的用法做一个应用:
现假设存在两张表,一张是学生成绩表(studnet),字段为:stdId,math,article,language,music,sport,total,average,step 一张是学生课外成绩表(out_school),字段为:stdId,parctice,comment
通过存储过程自动计算出每位学生的总成绩和平均成绩,同时,如果学生在课外课程中获得的评价为A,就在总成绩上加20分。
create or replace procedure autocomputer(step in number) is
rsCursor SYS_REFCURSOR;
commentArray myPackage.myArray;
math number;
article number;
language number;
music number;
sport number;
total number;
average number;
stdId varchar(30);
record myPackage.stdInfo;
i number;
begin
i := 1;
get_comment(commentArray); –调用名为get_comment()的存储过程获取学生课外评分信息
OPEN rsCursor for select stdId,math,article,language,music,sport from student t where t.step = step;
LOOP
fetch rsCursor into stdId,math,article,language,music,sport; exit when rsCursor%NOTFOUND;
total := math + article + language + music + sport;
for i in 1..commentArray.count LOOP
record := commentArray(i);
if stdId = record.stdId then
begin
if record.comment = ‘A’ then
begin
total := total + 20;
go to next; –使用go to跳出for循环
end;
end if;
end;
end if;
end LOOP;
> average := total / 5;
update student t set t.total=total and t.average = average where t.stdId = stdId;
end LOOP;
end;
end autocomputer;
–取得学生评论信息的存储过程
create or replace procedure get_comment(commentArray out myPackage.myArray) is
rs SYS_REFCURSOR;
record myPackage.stdInfo;
stdId varchar(30);
comment varchar(1);
i number;
begin
open rs for select stdId,comment from out_school
i := 1;
LOOP
fetch rs into stdId,comment; exit when rs%NOTFOUND;
record.stdId := stdId;
record.comment := comment;
recommentArray(i) := record;
i:=i + 1;
end LOOP;
end get_comment;
–定义数组类型myArray
create or replace package myPackage is begin
type stdInfo is record(stdId varchar(30),comment varchar(1));
type myArray is table of stdInfo index by binary_integer;
end myPackage;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/807707.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月26日 21:03:31
下一篇 2025年11月26日 21:08:04

相关推荐

  • Binance如何下载安装?Binance官方安卓iOS版方法

    本文介绍 binance 应用的下载安装方法。binance 是一家大型的加密货币交易平台,支持买卖与管理多种数字资产。本文提供官方app下载链接,点击本文提供的下载链接即可下载。 官方下载链接 • Binance 官方下载页(含 iOS / Android / 桌面): • Google Play…

    2025年12月11日
    000
  • 芝麻开门交易所Gate.io官网地址 gate.io交易平台官方PC端在线登录入口

    芝麻开门(gate.io)是一家历史悠久、以币种丰富和功能全面而著称的数字资产服务平台。对于许多习惯在pc端进行操作的用户来说,准确找到官方网站的登录入口是保障资产安全的第一步。本文将重点为您指明gate.io的官方pc端在线登录入口,并提供一套完整的新用户注册及安全设置指南。请通过本文提供的官方链…

    2025年12月11日
    000
  • gate.io官方入口链接 Gate交易所网页版注册地址

    gate.io官方入口链接在哪里?这是不少网友都关注的,接下来由php小编为大家带来gate交易所网页版注册地址,感兴趣的网友一起随小编来瞧瞧吧! Gate交易所网页版注册地址: gate.io官方APP下载: 平台访问与账户创建流程 1、进入官方网站后,在页面右上角可以找到“注册”按钮,点击即可跳…

    2025年12月11日
    000
  • 登录gate.io官方网站 Gate交易所网页版入口

    登录gate.io官方网站 gate交易所网页版入口在哪里?这是不少网友都关注的,接下来由php小编为大家带来gate.io官网登录入口及使用指南,感兴趣的网友一起随小编来瞧瞧吧! gate.io官方网站入口: gate.io官方APP下载: 平台访问与账户登录流程 1、直接在浏览器地址栏输入官方网…

    2025年12月11日
    000
  • Uniswap (UNI) 代币价值捕获:作为DEX龙头,UNI的未来增长点在哪里?

    作为去中心化交易所的领军者,uniswap的uni代币价值捕获一直是市场关注的焦点。尽管目前主要功能为治理,但其潜在的增长动力和未来的价值实现路径,正成为决定其长期投资价值的关键因素。 协议费用开关与价值回馈 1、目前Uniswap协议的“费用开关”尚未开启,交易手续费完全分配给流动性提供者,这在一…

    2025年12月11日
    000
  • 芝麻开门Gate交易平台官方网址 Gate.io交易所官方APP新手安装注册指南

    Gate.io 官网访问入口 1、打开浏览器访问Gate.io 官方网站:建议访问 Gate 官方域名,以防钓鱼风险。  2、在官网首页,您可以看到“注册 / 登录”入口,并进入平台进行操作。  3、建议将 Gate.io 官网添加到浏览器书签,以便下次快速访问并减少误入风险。  4、如遇登录问题,…

    2025年12月11日
    000
  • 芝麻开门交易所官方网站首页地址 芝麻Gate.io交易所官方APP认证获取链接

    芝麻开门(gate.io)是一家运营历史悠久、在全球范围内享有良好声誉的数字资产服务平台,尤其以其海量的币种选择和丰富的功能模块而著称。本篇指南将为您提供芝麻开门的官方网站入口与官方应用的安全获取方式,确保您的每一步操作都在正确的渠道上进行。 芝麻开门(Gate.io)官网入口: 芝麻开门(Gate…

    2025年12月11日
    000
  • 火币HTX交易平台全球站官网入口 火币官方APP在线下载地址

    火币(htx)作为一个资深的数字资产服务平台,以其稳健的运营和全面的交易功能在全球范围内赢得了用户的信赖。本篇文章旨在为您提供火币htx最新的官方网站入口指引及官方app的安全下载方法,帮助您安全、高效地开启交易之旅。请通过本文提供的官方链接进行所有操作,以确保安全。 火币HUOBI官网入口: 火币…

    2025年12月11日
    000
  • 币安Binance交易所官方网站登录入口 币安全球交易平台安全访问指南

    作为全球知名的数字资产交易平台,币安(binance)的官方网站是用户进行资产管理和交易的核心入口。确保每一次访问和登录都是安全可靠的,是保障您数字资产安全的首要任务。本指南旨在为您提供清晰的官方网站识别方法、安全的登录流程以及相关的安全建议,帮助您有效规避网络钓鱼等安全风险。本文中提供的链接均为官…

    2025年12月11日
    000
  • 什么是稳定币桥?它为何可能主导未来趋势?

    稳定币桥是连接不同区块链的跨链基础设施,通过锁定与铸造机制实现稳定币在多链间的自由流动,提升资本效率、推动多链DeFi发展、简化用户体验并构建统一的Web3经济生态,尽管面临安全与去中心化挑战,但其作为未来数字经济关键枢纽的地位日益凸显。 什么是稳定币桥?一个连接数字经济的纽带 在快速发展的区块链世…

    2025年12月11日
    000
  • Gate交易所网页版登录 gate.io官方网站入口链接

    芝麻开门官方网址 gate.io交易所网页登录入口在哪里?这是不少网友都关注的,接下来由php小编为大家带来gate.io交易所网页登录入口,感兴趣的网友一起随小编来瞧瞧吧! gate.io官方网站入口: gate.io官方APP下载: 平台访问与安全验证 1、在浏览器地址栏准确输入网址,确保网络环…

    2025年12月11日
    000
  • 欧易交易所官网新手使用教程_欧易OKX APP最新版v6.6.0功能详解

    准备踏入数字资产的世界吗?欧易(okx)是许多用户的首选平台。本指南将为您一站式解决从寻找官方入口、下载安装app到完成新用户注册的所有问题,即使是初次接触,也能轻松上手。 如何安全访问欧易OKX官网 欧易官方网址: 欧易官方app: 1、请通过上方的欧易OKX官网入口安全链接访问。2、访问时请仔细…

    2025年12月11日 好文分享
    000
  • 币安交易所app官方下载安装_币安binance官网最新版下载链接

    作为全球领先的数字资产交易平台,币安(binance)凭借其全面的功能、卓越的安全性与深度的市场流动性,成为了无数加密货币投资者与新手的首选。本文将为您提供币安app官方下载渠道与详细的安装注册指南,帮助您安全、快速地开启数字资产之旅。 币安官网入口与APP官方下载 为确保您的账户与资产安全,请务必…

    2025年12月11日 好文分享
    000
  • 欧易交易所官网登录问题解决_欧易OKX官方APP最新版本v6.6.0下载

    欧易(okx)作为全球知名的交易平台,是许多用户的首选。本指南将为您详细介绍2025年欧易okx最新的官方网站地址、app下载安装方法以及完整的新用户注册步骤,旨在帮助您轻松、安全地开启您的交易之旅。 一、欧易OKX官方网站入口 欧易官方网址: 欧易官方app: 1. 点击上方提供的官方链接,直接、…

    2025年12月11日 好文分享
    000
  • gate.io官网登录入口_gate.io交易所官方网站登录

    在快速发展的数字资产世界中,选择一个安全可靠的交易平台至关重要。gate.io作为一家历史悠久且备受信赖的综合性交易平台,为全球数百万用户提供了稳定、便捷的服务。要开始您的交易之旅,第一步就是准确找到并使用gate.io官网登录入口。本文将详细介绍如何安全地访问gate.io交易所官方网站,并探讨该…

    2025年12月11日
    000
  • KuCoin交易所官方APP注册入口 KuCoin平台 v4.0.5下载指南

    KuCoin是一款全球化的数字资产综合服务应用,为用户提供了一个便捷的平台来管理和交易多种类型的数字资产。本文旨在为用户提供KuCoin官方应用的下载渠道及一份详尽的安装与注册指南,您只需点击本文提供的下载链接,即可轻松获取最新版本的官方应用,开启您的数字资产管理新体验。 一、 官方注册入口详解 1…

    2025年12月11日
    000
  • Coinbase新手教程 Coinbase官网入口+完整注册流程

    注册Coinbase需通过官网coinbase.com或官方应用商店下载App,填写邮箱并设置强密码,完成验证码和人机验证后登录。随后创建储存包并手动备份12个单词的助记词,务必离线保存且不截图、不上传。最后完成身份认证(KYC),包括上传身份证和人脸识别,审核通过后即可使用全部交易功能。 币安bi…

    2025年12月11日
    000
  • gate.io登录入口_gate.io全球领先加密货币交易所入口

    在数字经济浪潮席卷全球的今天,加密数字资产作为一种新兴的资产类别,正吸引着越来越多关注的目光。在这个充满机遇与挑战的领域中,选择一个安全、可靠且功能强大的交易平台至关重要。gate.io,作为一家自2013年起便稳定运营的老牌加密货币交易所,凭借其卓越的技术实力、丰富的资产品种和极致的用户体验,成为…

    2025年12月11日
    000
  • gate.io官网登录_gate.io交易所官方平台登录入口

    在数字资产领域,选择一个可靠、安全的%ignore_a_1%是保障用户资产安全的第一步。gate.io作为一家历史悠久且备受信赖的综合性服务平台,为全球用户提供了广泛的数字资产服务。为了确保您的账户安全,正确、安全地访问和登录gate.io官方平台至关重要。本文将为您详细介绍如何安全地找到gate.…

    2025年12月11日
    000
  • OKX交易APP直达官网注册入口 OKX平台最新官方登录下载安全链接

    okx致力于为全球用户提供一个安全、稳定且功能全面的数字资产交易与管理环境。它凭借先进的技术架构、严格的风险控制体系以及不断创新的产品生态,在全球范围内赢得了数千万用户的信赖,为用户探索数字经济的前沿提供了坚实可靠的桥梁与工具,让每个人都能轻松便捷地参与到这场技术变革中。 一、官方网站入口 OKX安…

    2025年12月11日
    000

发表回复

登录后才能评论
关注微信