PL/SQL学习
深圳gg
这个作者很懒,什么都没留下…
展开
-
Oracle学习笔记整理之游标篇
游标分为隐式、显式、REF三种游标。而隐式游标和显式游标又都属于静态游标,REF游标属于动态游标。静态游标和动态游标的最大区别在于静态游标是在运行前将游标变量和SQL关联,而动态游标恰恰相反是在运行后将游标变量和SQL进行关联。隐式游标是由Oracle自动管理,也称sql游标。所有的DML都被Oracle解析成为一个名为SQL的隐式游标。DML包括Insert、Delete、Updat转载 2012-09-28 21:51:19 · 1005 阅读 · 0 评论 -
Oracle 11g保证存储过程同时只能被一个线程执行
create or replace procedure p_test as l_lock_id number; resource_busy exception; pragma exception_init(resource_busy,-54);begin if ( dbms_lock.request(id => 112233, lockmode => d原创 2017-06-14 17:54:09 · 3767 阅读 · 0 评论 -
Oracle 存储过程导出大量数据
现场提了一个需求,要执行一条很复杂的SQL,由于是省级的系统,同样的SQL,只是一个条件不一样,需要执行60次,每次查出的数据有上百万,在网上搜索了一个方法是eagle写的: 1.main.sql脚本:[oracle@jumper utl_file]$ more main.sqlset linesize 200 set term off verify off feedback o原创 2017-05-03 18:01:43 · 2991 阅读 · 0 评论 -
Oracle PL/SQL退出循环
在使用PL/SQL的时候,有时候会有这样的需求,执行动态的SQL,你只需要看循环一次的结果,样例如下:DECLARE V_POWER_GRID_FLAG NUMBER; TYPE BUREAU_CODE_T IS TABLE OF VARCHAR2(10); V_BUREAU_CODE_T BUREAU_CODE_T := BUREAU_CODE_T('0101', '0原创 2016-06-06 11:36:32 · 1815 阅读 · 0 评论 -
Oracle utl_file读取csv文件到数据库
drop table test purge;create table test( url varchar2(200), res_time varchar2(10));create or replace procedure loadfiledata(p_path varchar2,原创 2016-05-17 09:29:33 · 2477 阅读 · 0 评论 -
oracle pl/sql 分隔逗号
经常会遇到分隔字符串的需求,如下面的例子,要想看懂这个例子,需要明白函数instr:drop table test;create table test( id number, codes varchar2(500));insert into test values(1,'11,22,33,44');insert into test values(2,'33,44,5原创 2016-01-18 16:46:00 · 1276 阅读 · 0 评论 -
Oracle存储过程记录异常
对于Oracle的存储过程,抛出异常可以抛向代码或是用表记录。如果你的系统应用有很多节点,像我们40个节点,如果抛错抛到代码里面,错误根本就无法找到,最好是错误用表记录。记录错误的这个功能最好是通用的。--建立错误日志表create table PUB_PROC_ERR_LOG( LOG_ID NUMBER, MODULE_NAME VARCHAR2(100),原创 2014-12-08 14:43:11 · 2110 阅读 · 0 评论 -
Oracle PL/SQL复合数据类型
drop table test purge;create table test( id number(2), name varchar2(60));insert into test values(1,'aaa');insert into test values(2,'bbb');insert into test values(3,'ccc');insert原创 2014-10-27 11:01:48 · 1181 阅读 · 0 评论 -
oracle 存储过程中使用date 时、分、秒丢失
今天有一开发兄弟找我,说出现一奇怪现象,在存储过程中赋date类型的值,时、分、秒都丢失了,下面来做个试验:SQL> drop table test purge;SQL> create table test ( fill_date date );SQL> insert into test values(sysdate);SQL> commit;原创 2014-07-18 17:55:16 · 2955 阅读 · 0 评论 -
存储过程的优缺点及使用场景
我在文档《面向程序员的数据库访问性能优化法则》http://blog.csdn.net/yzsind/archive/2010/12/06/6059209.aspx里写了存储过程性能的优点,主要是减少网络交互。以下存储过程存在问题的详细描述:a、不可移植性,每种数据库的内部编程语法都不太相同,当你的系统需要兼容多种数据库时最好不要用存储过程。当你的系统需要考虑适应各种数据库的,存储转载 2014-06-05 08:26:48 · 12454 阅读 · 0 评论 -
存储过程调用java
网上有三种方法,这是其中的一种,要在sqlplus中执行。SQL> create or replace and compile java source named "javademo1" 2 as 3 import java.sql.*; 4 public class JavaDemo1{ 5 public static void main(Stri转载 2012-09-28 21:32:28 · 842 阅读 · 0 评论 -
GKD-BASE PL/SQL引擎实现关键技术研究
GKD-BASE数据库是一个具有自主知识产权的数据库管理系统,具有兼容SQL89标准的SQL引擎,能够为用户提供一个统一、有效的数据库访问接口,实现对数据库的各种操作。但是SQL语言缺乏对算法的描述能力,难以胜任复杂的程序设计。为了融合SQL语言强大的集合数据处理能力和第三代语言(3GL)灵活的过程处理能力,主流数据库管理系统产品都已提供了对过程式SQL语言的支持,如Oracle的PL/SQL[1转载 2013-01-16 21:04:01 · 1148 阅读 · 0 评论 -
oracle %TYPE 和 %ROWTYPE
1.使用%TYPE 很多时候,PL/SQL变量可以用来存储在数据库表中的数据。在这种情况下,变量应该拥有与表列相同的类型。如pub_user表的name列的类型为VARCHAR2(20),我们可以按照下述方式声明一个变量: DECLARE v_Name VARCHAR2(20); 但是如果name列的定义改变了(如表改变了,name原创 2012-12-28 09:28:56 · 1382 阅读 · 0 评论 -
Oracle 游标使用全解
经常要使用到游标,所以记录之。-- 声明游标;CURSOR cursor_name IS select_statement --For 循环游标--(1)定义游标--(2)定义游标变量--(3)使用for循环来使用这个游标declare --类型定义 cursor c_job is select empno,ename,jo转载 2012-09-27 08:46:08 · 1151 阅读 · 0 评论 -
Oracle 统计用户下表的数据量
要想统计用户下所有表的数据量,可以查看user_tables,此表里面是统计信息,当然这个可能不太准,要想非常精确,需要直接count表。下面的脚本有异常不中断,可以重复执行的特点。create table bk_count_tables( owner VARCHAR2(30), table_name VARCHAR2(30), part_col varchar2(100),-原创 2017-09-11 10:10:48 · 4993 阅读 · 0 评论