1、cursor传入参数

定义:cursor [cursor变量名称]([参数名称] [参数类型]) IS [SQL语句,可以使用传入参数]

例子:
    cursor moTypeNames(domain VARCHAR2) IS
      select t1.modelname from pm4h_mo.mdl_resmodel t1,pm4h_mo.mdl_domain t2
      where t2.domainname=domain
      and t1.domainid = t2.domainid;
    使用:open [cursor变量名称]([参数])

例子:

open moTypeNames(domainName);

2、loop fetch使用

fetch [cursor变量] into [循环变量]

when [cursor变量] %notfound;

例子:

loop

fetch domainNames into domainName;
      exit when domainNames%notfound;

end loop;

3、if使用

if(条件) then

[真值语句块]

end if;

4、单引号字符表示

'''':最外层两个单引号表示字符串引用,字符串中间第一个单引号表示转义,第二个单引号表示单引号。

例子:

v_sql :='select count(*)
                from pm4h_mo.mdl_resmodel t1, pm4h_mo.mdl_resmodeltable t2
                where  t1.modelname='''||moTypeName||''' and  t1.modelid=t2.modelid';

5、open cursor后要注意close cursor

declare
--存储域名
type t_cur is ref cursor;
domainNames t_cur;
domainName varchar2(50) :=''; --存储每个域下的网元类型
cursor moTypeNames(domain VARCHAR2) IS
select t1.modelname from pm4h_mo.mdl_resmodel t1,pm4h_mo.mdl_domain t2
where t2.domainname=domain
and t1.domainid = t2.domainid;
moTypeName varchar2(500) :=''; --拼接sql临时变量
v_sql varchar2(500) :=''; --网元实体表名称
tableName varchar2(500) :=''; --每个网元类型实体数
v_count_number number(30) :=0; --总实体数
v_count_sum number(30) :=0;
begin
--不限制输出长度
dbms_output.enable(null); --查询域名
open domainNames for
select domainname from pm4h_mo.mdl_domain; --循环域名
loop
fetch domainNames into domainName;
exit when domainNames%notfound;
dbms_output.put_line(domainName); --查询MoType
open moTypeNames(domainName); --循环MoType
loop
fetch moTypeNames into moTypeName;
exit when moTypeNames%notfound;
dbms_output.put(moTypeName); --查询是否存在实体表:ElementMoType不存在实体表
v_sql :='select count(*)
from pm4h_mo.mdl_resmodel t1, pm4h_mo.mdl_resmodeltable t2
where t1.modelname='''||moTypeName||''' and t1.modelid=t2.modelid';
execute immediate v_sql
into v_count_number; if(v_count_number <> 0) then
--存在实体表,查询实体表名
v_sql :='select t2.tablename
from pm4h_mo.mdl_resmodel t1, pm4h_mo.mdl_resmodeltable t2
where t1.modelname='''||moTypeName||''' and t1.modelid=t2.modelid';
execute immediate v_sql
into tableName; --查询实体数量
v_sql := 'select count(*) from pm4h_mo.obj_'||tableName || ' where verendtime is null';
execute immediate v_sql
into v_count_number;
dbms_output.put_line(':'||v_count_number); --计算实体总量
v_count_sum :=v_count_sum+v_count_number;
end if;
end loop;
dbms_output.put_line('');
close moTypeNames;
end loop;
dbms_output.put_line('total:'||v_count_sum);
close domainNames;
end;

PLSQL入门:cursor传参,loop fetch使用,if使用,单引号字符表示的更多相关文章

  1. Postman 串行传参和动态传参详解

    Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 用Postman做接口测试的时候,要把多条用例一起执行,就需要把用例连接起来,一次性执行 目录 串行传参 动态传参 使用 ...

  2. Postman高级应用——串行传参和动态传参详解

    Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 用Postman做接口测试的时候,要把多条用例一起执行,就需要把用例连接起来,一次性执行 目录 串行传参 动态传参 使用 ...

  3. php入门单引号与双引号区别

    [1]单引号和双引号在处理变量的时候做法: 括在双引号内的变量会解释出值,但是括在单引号内则不做处理,直接输出: <?php $var = 'my name is huige'; echo &q ...

  4. 脚本语言丨Batch入门教程第四章:调用与传参

    今天是Batch入门教程的最后一章内容:调用与传参.相信通过前面的学习,大家已经掌握了Windows Batch有关的基础知识和编程方法,以及利用Windows Batch建立初级的编程思维方式.今后 ...

  5. MyBatis从入门到放弃二:传参

    前言 我们在mapper.xml写sql,如果都是一个参数,则直接配置parameterType,那实际业务开发过程中多个参数如何处理呢? 从MyBatis API中发现selectOne和selec ...

  6. arm汇编进入C函数分析,C函数压栈,出栈,传参,返回值

    环境及代码介绍 环境和源码 由于有时候要透彻的理解C里面的一些细节问题,所有有必要看看汇编,首先这一切的开始就是从汇编代码进入C的main函数过程.这里不使用编译器自动生成的这部分汇编代码,因为编译器 ...

  7. (转)Javascript匿名函数的写法、传参、递归

    (原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 javascript匿名函数的写法.传参和递归 http: ...

  8. (转)javascript匿名函数的写法、传参和递归

    (原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 http://www.veryhuo.com 2011-0 ...

  9. MyBatis:传参

    MyBatis从入门到放弃二:传参 前言 我们在mapper.xml写sql,如果都是一个参数,则直接配置parameterType,那实际业务开发过程中多个参数如何处理呢? 从MyBatis API ...

随机推荐

  1. spring boot 通过Maven + tomcat 自动化部署

    使用maven创建的springboot项目,默认是jar包,springboot还有自己带的tomcat. 现在为了简单实现本地自动发布项目到服务器,需要通过发布war包的形式,通过maven将项目 ...

  2. Oracle数据库查询表信息/列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述)

    查询表信息(表名/表描述) Select table_Name As Name,Comments As Value From User_Tab_Comments Where table_Type='T ...

  3. php里面向指定的页面提交数据

    在jquery里用 load post 等等,无法得到我想要的结果!于是突然-----这几天想的东西都白想了,现在只好这样了 现在想在php里面向指定的页面提交数据,应该有,还可以有返回值 于是找了这 ...

  4. java基础/一个类A继承了类B,那么A就叫做B的派生类或子类,B就叫基类或超类。

    类重复,pulic class demo1 和class demo1 重复 无主类, 在cmd中输入命令: SET CLASSPATH=. (等号后为英文点符号),即可设置解释的路径为当前路径. 再次 ...

  5. windows下Anaconda3配置TensorFlow深度学习库

    Anaconda3(python3.6)安装tensorflow Anaconda3中安装tensorflow3是非常简单的,仅需通过 pip install tensorflow 测试代码: imp ...

  6. ubuntu 12.10上安装tftpd-hpa

    ubuntu 12.10上安装tftpd-hpa 1)安装tftp-hpa,tftpd-hpa sudo apt-get install tftp-hpa tftpd-hpa tftp-hpa是cli ...

  7. Charles 使用(拦截与修改)

    一.http 拦截(Breakpoints) 选取需要拦截的地址,鼠标右击选择Breakpoints 二.拦截结果与修改 可以在请求与返回结果中修改内容 1.所拦截的数据包 2.所拦截的请求 3.所拦 ...

  8. AOP 详解

    1. 需求:统计方法执行的性能情况(来源:<精通Spring 4.x>) // 性能监视类 PerformanceMonitor package com.noodles.proxy; pu ...

  9. windows7系统下让所有文件夹都使用同一种视图的方法

    Windows7系统可以对每个文件夹进行个性化视图设置,可以根据自己的个人喜好和实际需要更改文件或文件夹图标的大小,或者让文件或文件夹以列 表.平铺等方式显示.但是,如果你对N个文件夹视图进行了风格各 ...

  10. Best Cow Line---poj3617(贪心)

    题目链接:http://poj.org/problem?id=3617 题意:有n头牛.刚开始有一个序列.现在想要重新排列.每次从原始的序列头部和尾部取出一个取出一个放到新的序列尾部.最后使得得到的新 ...