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;  
时间: 2024-10-13 00:04:21

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

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

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 用Postman做接口测试的时候,要把多条用例一起执行,就需要把用例连接起来,一次性执行 目录 串行传参 动态传参 使用的接口是微信公众号开发文档里面的接口,详细请看开发文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 首先需要获取到接口测试号,开始开发>接口测试号申请>获得appID和appsecret,位置为:htt

Vue入门十三、路由的传参和取参

1.查询参login?id=12345 配置:(传参):to="{name:'login', query:{id:'loginid'}}"获取:(取参)this.$route.query.id 2.路由参数 配置:(传参):to="{name:'login', params:{id:'loginid'}}"获取:(取参)this.$route.params.id 3.路径参数register/registerid/info 配置:(传参):to="{nam

scrapy入门(二)请求传参和中间件

scrapy的请求传参 作用 : 实现深度爬取 使用场景 : 爬取的数据没有在同一张页面 例如, 爬取电影首页全部电影的详情页信息 #请求传参: 让Request将一个数据值(字典)传递给回调函数 #在第一页中将item对象的第一个属性赋值,然后通过请求传参将item对象传过去 #手动发送get请求: model_index = [3,4,6,7,8] for index in model_list: li =li_list[index] model_url = li.xpath('xxxxxx

jquery和highcharts折线图、柱形图、饼状图-模拟后台传参源码

js代码: <script type="text/javascript"> $(function(){ showLine(); showColumn(); showPie(); }); function showPie(){ jQuery.ajax({ type: "get", url: "csylLine.json", async: false, dataType: "json", success:functio

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

(原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 http://www.veryhuo.com 2011-08-07 断桥残雪部落格 投递稿件 我有话说 今天在整理javascript入门培训的PPT时,提到了匿名函数,所以拿来分享下心得. 匿名函数的写法顾名思义,就是没有名字的函数(⊙﹏⊙b汗).匿名函数通常用于javascript作用域的控制,可以有效的避免对全局变量的污染.常见的匿名函数有下面四种写

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

(原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 javascript匿名函数的写法.传参和递归 http://www.veryhuo.com 2011-08-07 断桥残雪部落格 投递稿件 我有话说 今天在整理javascript入门培训的PPT时,提到了匿名函数,所以拿来分享下心得. 匿名函数的写法顾名思义,就是没有名字的函数(⊙﹏⊙b汗).匿名函数通常用于javascript作用域的控制,可以有效的

JavaScript-12(传参练习)

注意: 用onclick="函数名()"传参时,如果函数名外面用双引号包裹时,则里面传字符串用单引号包裹:若外面用单引号包裹时,里面用双引号包裹:否则会报错. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ margin:

第四篇:python操作数据库时的传参问题

python在操作数据库执行sql的时候我们经常会遇到传参问题,以下是我总结的几种方法: 1.格式化字符串 city = 'beijing'cur.execute("SELECT * FROM %s WHERE city = %s", city) 2.使用字典传递 sql = "INSERT INTO user VALUES(%(username)s, %(password)s, %(email)s)"value = {"username":zh

爬虫scrapy组件 请求传参,post请求,中间件

post请求 在scrapy组件使用post请求需要调用 def start_requests(self): 进行传参再回到 yield scrapy.FormRequest(url=url,formdata=data,callback=self.parse)进行post请求 其中FormRequest()为post 请求方式 import scrapy class PostSpider(scrapy.Spider): name = 'post' # allowed_domains = ['ww