PLSQL入门:cursor传参,loop fetch使用,if使用,单引号字符表示
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使用,单引号字符表示的更多相关文章
- Postman 串行传参和动态传参详解
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 用Postman做接口测试的时候,要把多条用例一起执行,就需要把用例连接起来,一次性执行 目录 串行传参 动态传参 使用 ...
- Postman高级应用——串行传参和动态传参详解
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 用Postman做接口测试的时候,要把多条用例一起执行,就需要把用例连接起来,一次性执行 目录 串行传参 动态传参 使用 ...
- php入门单引号与双引号区别
[1]单引号和双引号在处理变量的时候做法: 括在双引号内的变量会解释出值,但是括在单引号内则不做处理,直接输出: <?php $var = 'my name is huige'; echo &q ...
- 脚本语言丨Batch入门教程第四章:调用与传参
今天是Batch入门教程的最后一章内容:调用与传参.相信通过前面的学习,大家已经掌握了Windows Batch有关的基础知识和编程方法,以及利用Windows Batch建立初级的编程思维方式.今后 ...
- MyBatis从入门到放弃二:传参
前言 我们在mapper.xml写sql,如果都是一个参数,则直接配置parameterType,那实际业务开发过程中多个参数如何处理呢? 从MyBatis API中发现selectOne和selec ...
- arm汇编进入C函数分析,C函数压栈,出栈,传参,返回值
环境及代码介绍 环境和源码 由于有时候要透彻的理解C里面的一些细节问题,所有有必要看看汇编,首先这一切的开始就是从汇编代码进入C的main函数过程.这里不使用编译器自动生成的这部分汇编代码,因为编译器 ...
- (转)Javascript匿名函数的写法、传参、递归
(原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 javascript匿名函数的写法.传参和递归 http: ...
- (转)javascript匿名函数的写法、传参和递归
(原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 http://www.veryhuo.com 2011-0 ...
- MyBatis:传参
MyBatis从入门到放弃二:传参 前言 我们在mapper.xml写sql,如果都是一个参数,则直接配置parameterType,那实际业务开发过程中多个参数如何处理呢? 从MyBatis API ...
随机推荐
- 高斯混合模型Gaussian Mixture Model (GMM)
混合高斯模型GMM是指对样本的概率密度分布进行估计,而估计采用的模型(训练模型)是几个高斯模型的加权和(具体是几个要在模型训练前建立好).每个高斯模型就代表了一个类(一个Cluster).对样本中的数 ...
- Nodejs express、html5实现拖拽上传
一.前言 文件上传是一个比较常见的功能,传统的选择方式的上传比较麻烦,需要先点击上传按钮,然后再找到文件的路径,然后上传.给用户体验带来很大问题.html5开始支持拖拽上传的需要的api.nodejs ...
- Python之shutil模块
shutil 高级的 文件,文件夹,压缩包 处理模块 正常把一个文件的内容拷贝到另外一个文件 s = file("test.py")d = file("test_copy ...
- 线段树(Segment Tree)总结
0 写在前面 怎么说呢,其实从入坑线段树一来,经历过两个阶段,第一个阶段是初学阶段,那个时候看网上的一些教学博文和模板入门了线段树, 然后挑选了一个线段树模板作为自己的模板,经过了一点自己的修改,然后 ...
- Spring的AOP编程
1.手动实现AOP编程(代理模式) AOP是面向切面的编程,主要功能就是实现"业务代码"和辅助业务代码的"关注点代码"分离.在一个方法中,出了核心的业务代码,其 ...
- linux:查看以及管理进程
学习笔记内容概要 进程查看的命令:top,ps,pstree 进程管理的命令:kill,nice,renice 查看进程: 一.top工具 top 工具是我们常用的一个查看工具,能实时的查看我们系统的 ...
- eclipse spket插件 错误 Syntax error on token "(", FunctionExpressionHeader expected after this
在myEclipse抵抗了两个小时后,终于被spket插件搞上了.其实上学期自己也学过Ext.js,哈哈..慕名而来的. 但当时功力不足,不得以要停止修炼.可现在不同,java的基础和j2ee的ssh ...
- 【点击模型学习笔记】Modeling contextual factors of click rates_MS_AAAI2007
概要 并没有觉得这是篇高质量的文章,非常奇怪为什么可以发表在AAAI上面. 文章的创新点比較单薄:在传统点击率预測模型(LR)的基础上增加了两类新的特征,一个是位置特征.一个是广告上下文特征--即和它 ...
- 001-读书笔记-企业IT架构转型之道-阿里巴巴中台战略思想与架构实战-第一章 阿里巴巴集团中台战略引发的思考
1.1.阿里中台发展 组件中台可能问题:组织间业务协作.业务核心能力的沉淀.组织KPI考核等 1.2.企业信息中心发展的症结 1.烟囱式系统建设模式 独立构建独立维护 缺点:1.重复功能建设和维护带来 ...
- spring boot配置service发布服务
在application.yml中配置 server: port: 8080 context-path: /crm spring: datasource: driver-class-name: com ...