oracle改了包怎么保存,Oracle存储过程、包、方法使用总结(推荐)

/**

*@author:zhengwei

*@date:2017-04-28

*@desc:存储过程用法总结

*/

CREATE OR REPLACE PROCEDURE MYPROCEDURE(P_ID IN VARCHAR,

P_STATUS OUT VARCHAR) --P_ID为输入参数 ,P_STATUS为输出参数

AS

---变量声明

T_STATUS VARCHAR2(20);

T_ID NUMBER;

V_POSTYPE VARCHAR2(20);

V_DESCRIPTION VARCHAR2(20);

---对象变量定义和声明

TYPE XRECORD IS RECORD(

FUND VARCHAR2(50),

BATCH_NO VARCHAR2(50),

TRAN_AMT NUMBER,

END_BAL NUMBER,

TRAN_DATE VARCHAR2(50),

TRAN_TIME VARCHAR2(50),

SUB_WATER NUMBER);

XWATER XRECORD;

---游标声明,并填充数据

CURSOR MY_CUR IS

SELECT POS_TYPE, DESCRIPTION FROM VOTEMASTER;

BEGIN

---变量赋值(注意:in类型的参数不能直接赋值)

T_STATUS := '1';

P_STATUS := T_STATUS;

DBMS_OUTPUT.put_line('P_STATUS:' || P_STATUS);

BEGIN

---循环游标,使用游标

FOR V_ROW IN MY_CUR LOOP

BEGIN

V_POSTYPE := V_ROW.POS_TYPE;

V_DESCRIPTION := V_ROW.DESCRIPTION;

DBMS_OUTPUT.put_line('POSTYPE:' || V_POSTYPE || ',description:' ||

V_DESCRIPTION);

END;

END LOOP;

END;

---WHILE循环用法

BEGIN

WHILE i < 10 LOOP

BEGIN

i := i + 1;

END;

END LOOP;

END;

--将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)

BEGIN

SELECT col1, col2 INTO 变量1, 变量2 FROM typestruct WHERE xxx;

EXCEPTION

WHEN NO_DATA_FOUND THEN

xxxx;

END;

---IF判断语句用法

BEGIN

SELECT VOTETITLE, VATESUM

INTO T_NAME, T_COUNT

FROM VOTEMASTER

WHERE ID = P_ID;

IF T_COUNT <= 0 THEN

P_STATUS := T_NAME || ':差';

ELSIF T_COUNT > 0 AND T_COUNT < 3 THEN

P_STATUS := T_NAME || ':良好';

ELSE

P_STATUS := T_NAME || ':优秀';

END IF;

END;

---对象变量赋值

BEGIN

SELECT FUND,

BATCH_NO,

TRAN_AMT,

END_BAL,

TRAN_DATE,

TRAN_TIME,

SUB_WATER

INTO XRECORD

FROM ACCT_WATER

WHERE FUND = P_ID;

--对象变量的使用

DBMS_OUTPUT.put_line(XRECORD.BATCH_NO || XRECORD.FUND);

END;

---索引表

---我们在使用存储过程的时候经常需要处理记录集,也就是多条数据记录。分为单列多行和多列多行,这些类型都可以称为集合类型。索引表就是集合类型中的一种。

---索引表,也称为pl/sql表,不能存储于数据库中,元素的个数没有限制,下标可以为负值。

---使用场景:如果仅仅是在存储过程中当作集合变量使用,索引表是最好的选择。(也可以通过创建临时表替代,但就不那么科学了,而且后期还得维护临时表)

---索引表对象使用方案1:

BEGIN

---索引表对象声明、定义、使用

DECLARE

TYPE acct_table_type IS TABLE OF ACCT%ROWTYPE INDEX BY BINARY_INTEGER;

---定义了一个索引表v_acct_table,其表中的每行记录是ACCT表中的一行记录

v_acct_table acct_table_type;

BEGIN

SELECT * BULK COLLECT ---BULK COLLECT INTO指是一个成批聚合类型, 简单的来说 , 它可以存储一个多行多列存储类型

INTO v_acct_table

FROM ACCT

WHERE acct_type = '570'

AND ROWNUM < 5;

FOR i IN 1 .. v_acct_table.COUNT LOOP

DBMS_OUTPUT.put_line('ACCT:' || v_acct_table(i).fund || ',' || v_acct_table(i).bal || ',' || v_acct_table(i)

.real_nmbr);

END LOOP;

END;

END;

---索引表对象使用方案2:

BEGIN

--例子:利用记录RECORD可用整体赋值的特性来填充PL/SQL表

DECLARE

TYPE RECTYPE IS RECORD(

FUND ACCT.FUND%TYPE,, ---表示定义的变量的类型为表Acct的fund字段的同样数据类型

BAL ACCT.BAL%TYPE,

OWNER ACCT.OWNER%TYPE,

REAL_NMBR VARCHAR(30));

---定义了一个索引表MYTAB,其表中的每行记录是RECORD

TYPE TABTYPE IS TABLE OF RECTYPE INDEX BY BINARY_INTEGER;

MYTAB TABTYPE;

VN NUMBER;

BEGIN

--填充

VN := 1;

FOR VARR IN (SELECT FUND, BAL, OWNER, REAL_NMBR

FROM ACCT

WHERE ROWNUM <= 15

ORDER BY FUND ASC) LOOP

MYTAB(VN) := VARR; --记录整体赋值

VN := VN + 1;

END LOOP;

--访问

VN := MYTAB.FIRST;

FOR VARR IN VN .. MYTAB.COUNT LOOP

DBMS_OUTPUT.PUT_LINE(VN || ' ' || MYTAB(VN).FUND || ' ' || MYTAB(VN).BAL ||

' ' || MYTAB(VN).OWNER || ' ' || MYTAB(VN)

.REAL_NMBR);

VN := MYTAB.NEXT(VN);

END LOOP;

END;

END;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2017级面向对象程序设计】第2次成绩排行

作业地址 https://edu.cnblogs.com/campus/fzu/OOP/homework/1864 评分标准 1&#xff09; C 流程图 or 文字描述程序结构 5分C 类图 or 文字描述程序结构 5分2&#xff09; 代码 共 10 分构造函数 &#xff1a;2 分析构函数 &#xff1a;2 分成员函数 显示当前所处楼层&#x…

css定位position

闲言碎语不多说&#xff0c;直接开写&#xff01; 关于定位 我们可以使用css的position属性来设置元素定位类型&#xff0c;position的设置项如下&#xff1a; a、relative生成相对定位元素&#xff0c;元素所占据的文档流的位置不变&#xff08;即元素不会脱离文档流&#x…

Spring Security登录

1.简介 本文将重点介绍使用Spring Security登录 。 我们将在前面的简单Spring MVC示例的基础上构建&#xff0c;因为这是设置Web应用程序和登录机制的必要部分。 2. Maven依赖 要将Maven依赖项添加到项目中&#xff0c;请参阅Spring Security with Maven文章 。 标准的spring-…

php运城,运城php培训

作用域&#xff1a;全局的request恳求   描绘&#xff1a;经过在Global中完成Application_Error办法&#xff0c;来到达侦听未经处置的异常   详细代码如下&#xff1a;sudo dtrace -qFn pid$target:Finding?Ray:Finding?Ray:r{ printf("%s\n", probefunc); } …

sql语句使用、说明及技巧

一、基础 1、说明&#xff1a;创建数据库CREATE DATABASE database-name 2、说明&#xff1a;删除数据库drop database dbname3、说明&#xff1a;备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat--- …

利用爬虫模拟网页微信wechat

1.登录页面&#xff0c;显示二维码 当我们打开网页微信时&#xff0c;会看到一个用于扫码登录的二维码&#xff0c;所以我们要模拟该页面给我们的页面也弄一个二维码 通过查看网页代码我们发现&#xff0c;这个二维码的标签为 这个src属性的最后一段每次访问都是不同的&#xf…

Bootstrap分页

前面的话 分页导航几乎在每个网站都可见&#xff0c;好的分页能给用户带来好的用户体验。本文将详细介绍Bootstrap分页 概述 在Bootstrap框架中提供了两种分页导航&#xff1a; ☑ 带页码的分页导航 ☑ 带翻页的分页导航 页码分页 带页码的分页导航&#xff0c;可能是最常见…

php 查询and or,php – SQL查询多个AND和OR不起作用

我有一个包含由双管分隔的值的单元格.我试图用以下内容搜索这个单元格的内容,(其中10是要搜索的数字)&#xff1f;,10&#xff05;,&#xff1f;&#xff05;和10我的查询似乎只返回10.没有其他变化.有人可以告诉我为什么它不起作用&#xff1f;提前谢谢了. (您在下面看到的SQL…

[codevs1213]解的个数 二分 + exgcd

题目← 扩欧&#xff0c;求不定方程解的个数 我们已经知道通解x0 x - (b/gcd(a,b))t&#xff0c;那只要知道有多少个t使x在题目给定的范围中就行了 但还有y 怎么办&#xff1f;求交集&#xff01; 分别二分确定在x取值范围内合法的t的范围和在y取值范围内合法的t的范围 然后交…

爬取饿了么商铺信息

分析&#xff1a; 当我们访问https://www.ele.me/home/时&#xff0c;看看我们得到了什么 1.png我们发现所有的城市名称和他的经纬度&#xff0c;还有一个风流的男子 然后随机输入一些东西看看&#xff0c;进入某个地区看一看 在新的界面里我们看到了这样一条url: https://main…

html中的锚点

一、页面内跳转的锚点设置 页面内的跳转需要两步&#xff1a; 方法一&#xff1a; ①&#xff1a;设置一个锚点链接<a href"#miao">去找喵星人</a>&#xff1b;&#xff08;注意&#xff1a;href属性的属性值最前面要加#&#xff09; ②&#xff1a;在页…

linux基本命令du,Linux常用操作命令汇总

你还在为不知道Linux常用操作命令汇总而不知所措么?下面来是学习啦小编为大家收集的Linux常用操作命令汇总&#xff0c;欢迎大家阅读&#xff1a;Linux常用操作命令汇总1.ls 命令ls以默认方式显示当前目录文件列表服务器教程ls -a显示所有文件包括隐藏文件ls -l显示文件属性&a…

Maven部署到Nexus

1.概述 在上一篇文章中 &#xff0c;我讨论了Maven项目如何在本地安装尚未部署在Maven Central&#xff08;或任何其他大型且公共托管的存储库&#xff09;上的第三方jar。 该解决方案仅适用于小型项目&#xff0c;在这些项目中安装&#xff0c;运行和维护完整的Nexus服务器可能…

后处理效果栈

Unity官方的Github实现&#xff1a;Post Processing Stack Post-processing is the process of applying full-screen filters and effects to a camera’s image buffer before it is displayed to screen. It can drastically improve the visuals of your product with litt…

【Java IO流】浅谈io,bio,nio,aio

本文转载自&#xff1a;http://www.cnblogs.com/doit8791/p/4951591.html1、同步异步、阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的。 阻塞和非阻塞是针对于进程在访问数据的时候&#xff0c;根据IO操作的就绪状态来采取的不同方式&#xff0c;说白了是一种读…

linux 安装tcl命令,TCL/TK Linux下安装 | 勤奋的小青蛙

原创文章&#xff0c;转载请注明&#xff1a; 转载自勤奋的小青蛙本文链接地址: TCL/TK Linux下安装在Linux下安装TCL/TK&#xff0c;可以有编译源代码的方式安装&#xff0c;也可以有直接通过二进制压缩包进行解压缩安装&#xff0c;本文采用比较快捷的方式&#xff0c;用二进…

安全性中的Spring AOP –通过方面控制UI组件的创建

以下文章将显示在我参与的一个项目中&#xff0c;我们如何使用Spring的AOP来介绍一些与安全性相关的功能。 这样的概念是为了使用户能够看到一些UI组件&#xff0c;他需要具有一定级别的安全特权。 如果不满足该要求&#xff0c;则不会显示UIComponent。 让我们看一下项目结构&…

模拟生物自然进化的基因遗传算法

基因遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;是一种通过模拟生物进化过程来寻找最优解的优化算法。它是一种常见的启发式搜索算法&#xff0c;常用于优化、搜索和机器学习等领域。 生物基因遗传 生物的基因遗传是指父母通过基因传递给子代的过程。基因…

折半查找算法及分析(手工过程)

折半查找的手工过程&#xff1a; 1.我需要查找的数是10&#xff1b; 给定&#xff1a;1 5 8 10 13 14 17 22 25 27 29 31 35 37 40 42 45 47 50 51 58 下标&#xff1a;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1…

Bootstrap下拉菜单

前面的话 网页交互的时候经常会需要上下文菜单或者隐藏/显示菜单项&#xff0c;Bootstrap默认提供了用于显示链接列表的可切换、有上下文的菜单。而且在各种交互状态下的菜单展示需要和javascript插件配合才能使用。本文将详细介绍Bootstrap下拉菜单 使用方法 在使用Bootstrap框…