Oracle存储过程的基本学习


摘要

这个简要学习应该会分为上下两部分
第一部分是存储过程的学习.
第二部分是python的学习. 核心目标是查询Oracle数据库中的主键数据.
如果有主键upper之后相同的数据查询出来.并且进行展示
避免部分数据迁移时出现问题.

存储过程的语法以及主要注意事项-调试注意事项

建议将serveroutput 打开.
将 linesize和 pagesize 尽量加大一些.
这样可以保证数据的显示和使用. SET SERVEROUTPUT ON;
set pagesize 10000;
set linesize 10000; 注意 SERVEROUTPUT ON
是打开输出. 不打开:
DBMS_OUTPUT.PUT_LINE("Hello world")
是无法打印的.
SET SERVEROUTPUT ON
exec DBMS_OUTPUT.PUT_LINE('Hello')

定义存储过程

SET SERVEROUTPUT ON;
set pagesize 10000;
set linesize 10000;
CREATE OR REPLACE PROCEDURE duplicationcheck
AS
STR VARCHAR2(5000);
col_name VARCHAR2(100);
col_cnt int;
CURSOR TEMP IS
SELECT table_name, column_name
FROM zhaobsh003 ;
BEGIN
dbms_output.enable(1000000);
FOR S IN TEMP LOOP
STR := 'select count(upper('||S.column_name||')) as '||S.table_name||', upper('||S.column_name||') from '||S.table_name||' group by upper('||S.column_name||') having count(upper('||S.column_name||')) >1 ' ;
BEGIN
EXECUTE IMMEDIATE STR into col_cnt,col_name;
EXCEPTION
when others then
null ;
END;
dbms_output.put_line(S.table_name||': '||col_name||' '||col_cnt);
END LOOP;
END duplicationcheck;
/
exec duplicationcheck ;

存储过程的简单说明

CREATE OR REPLACE PROCEDURE something
# 创建存储过程的语法
AS
STR VARCHAR2(5000);
col_name VARCHAR2(100);
col_cnt int;
# 定义变量
CURSOR TEMP IS
SELECT TABLE_NAME,COLUMN_NAME FROM ZHAOBSH003
# 将变量注入到具体的变量里面去 CURSOR的游标处理.
BEGIN
# 这个开始循环, 将游标里面的内容进行循环.
FOR S IN TEMP LOOP
STR := 'XXX';
# 这个进行异常判断. 避免中断
BEGIN
EXECUTE IMMEDIATE STR into col_cnt,col_name;
EXCEPTION
# 异常处理
WHEN OTHERS THEN
NULL ;
END;
# 打印出具体的结果
dbms_output.put_line(S.table_name||': '||col_name||' '||col_cnt);
# 对应LOOP 的终止
END LOOP;
# 对应最上面的BENGIN进行终止.
END duplicationcheck;
/
# 这个命令是执行存储过程
exec duplicationcheck ;

Oracle存储过程的基本学习的更多相关文章

  1. Oracle存储过程学习使用

    存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); 变量2 类型(值 ...

  2. ORACLE存储过程学习

    存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...

  3. Oracle 存储过程学习

    转自:http://blog.chinaunix.net/uid-20495387-id-174394.html http://www.cnblogs.com/rootq/articles/11000 ...

  4. Oracle存储过程学习备忘

    之前的项目使用存储过程很少,但在实际的项目中,存储过程的使用是必不可少的. 存储过程是一组为了完成特定功能的SQL 语句 集,经编译后存储在数据库中:存储过程创建后,一次编译在程序中可以多次调用,对安 ...

  5. Oracle 存储过程学习笔记

    1.存储过程简单实例 CREATE OR REPLACE PROCEDURE 存储过程名称 (参数in,参数out) AS -- 变量声明,每个声明用分号结束.可以在声明的同时初始化 name ); ...

  6. 用java调用oracle存储过程总结(转)

    //1.call+包名+存储过程名(传入.传出值用?) String str="{call SMSBUSINESS.deleteZhZMember(?,?,?)}"; //2.建立 ...

  7. oracle 存储过程 动态sql语句

    一.在oracle项目开发中越到问题: 在利用ODP向oracle中插入数据时,如果这样写:   insert into clobTable (id, story) values(1,'....'); ...

  8. 用java调用oracle存储过程总结

    以前一直没有动存储过程是用来干嘛的,后来请教朋友才换为自己的理解方式,用自己通俗的语言来说,就是把sql语句换为一个过程,也可以说是一个方法,每次直接给参数调用就好,使用存储过程查询速度快,系统只编译 ...

  9. oracle 存储过程(分析理解)

    我的理解 比较简单(仅供参考)   存储过程就相当于java里面的方法 简单讲就是一串代码能够实现某个特定的功能,想要使用这个方法直接调用方法名就能够使用他的功能,这就是方法 oracle 存储过程也 ...

  10. oracle存储过程(返回列表的存储结合游标使用)总结 以及在java中的调用

    这段时间开始学习写存储过程,主要原因还是因为工作需要吧,本来以为很简单的,但几经挫折,豪气消磨殆尽,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励. 以下是我在开发项目中第一次 ...

随机推荐

  1. 地图服务器GeoServer的安装与配置

    目录 1.安装配置Java 2.安装配置Tomcat 3.安装配置GeoServer GeoServer提供了多种安装配置方式,但是本质上GeoServer是一个基于Java Web的项目,因此我们理 ...

  2. 一文带你熟知ForkJoin

    摘要:ForkJoin将复杂的计算当做一个任务,而分解的多个计算则是当做一个个子任务来并行执行. 本文分享自华为云社区<[高并发]什么是ForkJoin?看这一篇就够了!>,作者:冰 河. ...

  3. Axure 弹出框遮罩层灯箱效果

    灯箱效果:比较适合Web, 效果不太理想,还是自己做个比较合适 弹出效果:就是弹框 推动效果:A 元件显示的时候,把 B元件往下.右移动.如Web左侧菜二级单效果

  4. Windows 2016 安装 Jenkins

    Docker Jenkins 安装配置 Windows 2016 安装 Jenkins Jenkins + SVN Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 ...

  5. Intellij idea 生成带注释的get/set

    自带的 Alt+ Insert 中的 Getter and  Setter 生成的属性,不能将 private 字段中的注释带过去,比较尴尬.可以通过两种试. 1. 修改模板:这种方法不能得到 pri ...

  6. Interceptor Handle 执行顺序

    preHandle 调用时间:Controller方法处理之前 执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序一个接一个执行 若返回false,则中断执行,注意:不会 ...

  7. Go--发起HTTP请求

    一.HTTP请求 根据 HTTP 标准,HTTP 请求可以使用多种请求方法.在日常开发中大多数会用到 5 种请求方法: GET.POST.PUT.PATCH 和 DELETE 方法 描述 GET 请求 ...

  8. WCF 动态调用 动态代理

    关键词:WCF动态调用.动态调用WCF.WCF使用动态代理精简代码架构.使用反射执行WCF接口 代码地址: https://gitee.com/s0611163/DynamicWCF https:// ...

  9. Codeforces Round #565 (Div. 3) (重现赛个人题解)

    1176A. Divide it! 题目链接:http://codeforces.com/problemset/problem/1176/A 题意: 给定一个数字 \(n\) 和三种操作 如果 n 能 ...

  10. 这才是你应该了解的Redis数据结构!

    深入了解Redis数据结构 Redis,作为一种高性能的内存数据库,支持多种数据结构,从简单的字符串到复杂的哈希表.在这篇博文中,我们将深入探讨Redis的一些主要数据结构,并通过详细的例子展示它们的 ...