视图新语

视图新语

视图是数据库的一个重要概念。可以简单的理解为存储的查询。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。视图可帮助用户屏蔽真实表结构变化带来的影响。SQLHUB是一个分布式异构数据库,主要用于数据集成。Sqlhub支持视图,并且支持更广义的视图:

l         视图不仅仅是一个SELECT查询语句,可以是一个程序块,可以理解为没有参数,返回结果为数据集的存储过程。

l         视图可以缓存数据,并且可以设置缓存时长,提升非实时查询性能。这对于异构数据集成且实时性要求不严格的环境非常重要。

语法:

CREATE [OR REPLACE] VIEW [schemaName.]name [DELAY delay] AS {查询表达式 | 程序块}

参数:

DELAY

查询结果缓存时间,单位为秒,0表示不缓存。-1表示永久缓存,缓存是与连接相关的。可以查询[schemaName.]name$进行强制更新。

 

例子:

create or replace view v_ip as
begin
 
--构建结果表
  t_ip := select adapter,dns_suffix,ip_address,subnet_mask,gateway from serial(
1,0);
 
--初始化变量
  v_adapter :=
'';
  v_dns_suffix :=
'';
  v_ip_address :=
'';
  v_subnet_mask :=
'';
  v_gateway :=
'';
 
--计数器
  n := -
1;
 
--分析调用操作系统命令后的输出
  for i in (select * from split(oscmd(
'ipconfig'),'/n') where trim(f1) != '') loop
    if mod(n,
5) = 0 then
      v_adapter := substr(i.f1,
18);
      v_adapter := substr(v_adapter,
1, length(v_adapter) - 1);
    elsif mod(n,
5) = 1 then
      v_dns_suffix := substr(i.f1,instr(i.f1,
':') + 1);
    elsif mod(n,
5) = 2 then
      v_ip_address := substr(i.f1,instr(i.f1,
':') + 1);
    elsif mod(n,
5) = 3 then
      v_subnet_mask := substr(i.f1,instr(i.f1,
':') + 1);
    elsif mod(n,
5) = 4 then
      v_gateway := substr(i.f1,instr(i.f1,
':') + 1);
     
--插入记录
      insert into t_ip (adapter,dns_suffix,ip_address,subnet_mask,gateway)
                values (v_adapter,v_dns_suffix,v_ip_address,v_subnet_mask,v_gateway);
    end if;
    n := n +
1;
  end loop;
  return t_ip;
end;
查询:

select * from v_ip

结果:

+-------------------------------+------------+----------------+----------------+---------+

| ADAPTER                       | DNS_SUFFIX | IP_ADDRESS     | SUBNET_MASK    | GATEWAY |

+-------------------------------+------------+----------------+----------------+---------+

| VMware Network Adapter VMnet8 |            |  192.168.37.1  |  255.255.255.0 |         |

| VMware Network Adapter VMnet1 |            |  192.168.174.1 |  255.255.255.0 |         |

+-------------------------------+------------+----------------+----------------+---------+

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值