lightdb -- 兼容Oracle -- 支持 connect by rownum
介绍connect by rownum 用于生成序列,首先获取表中的所有记录,然后为获取的第一条记录生成 N 个孩子节点。connect by rownum 用于生成序列,完全可以通过 PG 的 `generate_series` 函数代替`SELECT ... FROM DUAL CONNECT BY rownum <=10`等价于`SELECT ... FROM generate_ser
lightdb -- 支持 rownum 并行执行
lightdb中 rownum 作为约束条件时,使用"COUNT STOPKEY"查询优化技术,原理是在扫描表时,会在满足rownum < N条件的记录数量达到指定值后停止扫描,而不是继续扫描整个表。这样可以节省大量的IO和处理时间。 当前rownum不支持并行的"COUNT STOPKEY",对于一些的场景,查询效率会很
lightdb -- Oracle兼容 -- 支持Oracle多表层级查询的下推优化
在Oracle数据库中,层级查询可以很方便地查询含义等级关系的数据,例如工资表与部门表之间的下属关系。而在实际应用中,多数情况下这些关系数据分布在多个表中,需要跨表进行层级查询。对于两种方式连接多表:隐式连接和显示连接。隐式连接指没有明确指定JOIN子句;显示连接指明确使用JOIN关键字指定连接方式。这两种连接方式在WHERE子句中的连接条件下推上具有区别:对于隐式连接,Oracle会试图将WHE
lightdb -- Oracle兼容 -- rownum
ROWNUM 是 Oracle 中的一个伪列,用于表示当前查询中的行号。它的主要作用是用于限定查询结果中的行数,实现类似于 LIMIT 功能的效果。lightdb 中实现了和 Oracle 同样效果的功能,在本文中,我们将探讨 ROWNUM 的特点和限制,以及一些示例来帮助读者更好地理解和使用它。ROWNUM 的特点和限制首先,让我们来了解一下 ROWNUM 的特点和限制。ROWNUM 的值会随着
lightdb -- merge into insert 兼容 Oracle
最近,在支持业务从Oracle迁移到lightdb中发现merge into的不兼容:业务中merge语法中有`insert(table.column)`用表前缀的SQL,但在lightdb 的`merge`操作中却不被支持。所以新版的lightdb支持了该功能。Merge语句简介在开始介绍`insert(table.column)`在`merge`语句中的支持之前,让我们先了解一下`merge`
lightdb新特性 -- plorasql 支持使用 CREATE DOMAIN 创建游标类型的变量
本文将介绍如何在LightDB存储过程中使用CREATE DOMAIN创建游标类型的变量,以及如何利用这一功能来处理查询结果。什么是CREATE DOMAIN?CREATE DOMAIN是一条SQL语句,用于在数据库中创建用户定义的数据类型。它允许我们定义一种新的数据类型,该类型可以基于现有的数据类型(如整数、字符、日期等)进行自定义。这使得我们可以更好地管理和组织数据,提高代码的可读性和维护性。
lightdb新特性--兼容oracle--函数参数有多个out类型,return可以返回任意类型
plpgsql 中函数参数列表中如果多个 OUT,那么函数的 returns 值必须是 recored 类型,如果 returns 指定的是非 record,那么将会报错。 create or replace function func(x int, out y int, out z int) returns int as $$ declare begin y = 1;
oracle语法兼容--如何通过with recursive语法来实现oracle的分层查询
1. 分层查询Oracle中的connect by语法用于分层查询,它根据构成父子关系的数据按层次顺序返回结果集的行。Oracle中分层查询的语法如下:SELECT select_list FROM table_expression [ WHERE ...] [ START WITH start_expression ] CONNECT BY { PRIOR
lightdb新特性--兼容oracle--支持connect by分层查询
Oracle中的connect by语法用于分层查询,它根据构成父子关系的数据按层次顺序返回结果集的行。Oracle中分层查询的语法如下:SELECT select_list FROM table_expression [ WHERE ...] [ START WITH start_
lightdb新特性--兼容oracle--支持创建独立的嵌套表类型
前面文章介绍了嵌套表可以定义在存储过程和package中,lightdb新版本也支持创建独立的嵌套表类型,即可以通过create type来创建用户自定义的嵌套表类型,然后作为一个普通的数据
lightdb新特性--兼容oracle存储过程--包package支持嵌套表
在前面的文章中介绍了lightdb新特性package和嵌套表,但是之前的版本并不支持在package中定义和使用嵌套表。为了满足业务需求,在当前版本中支持了该特性,下面对该特性作简单的介绍
lightdb新特性--兼容oracle存储过程--嵌套表
从概念上讲,嵌套表就像一个具有任意数量元素的一维数组。但是,嵌套表与数组在以下几个重要方面有所不同:l 数组需要声明元素个数,但嵌套表不需要。嵌套表的大小可以动态增加。l 数组总是稠密的。嵌套数组最初是密集的,但可能变得稀疏,因为可以从中删除元素。 嵌套表与
lightdb新特性--兼容oracle存储过程--包package支持联合数组
在前面的文章中介绍了lightdb新特性package和联合数组,但是之前的版本并不支持在package中定义和使用联合数组。为了满足业务需求,在当前版本中支持了该特性,下面对该特性作简单的介绍。
lightdb新特性--兼容oracle存储过程--包package
包概述 包是一个模式对象,它对逻辑上的 类型、变量、常量、子程序、游标和异常进行分组。包被编译并存储在数据库中,应用程序可以在数据库中可以共享其内容。 包由包规范(Specification) 和包体(Body) 两部分组成, 在数据库中独立存储。 其中,规范声明了可以
lightdb新特性--兼容oracle存储过程--联合数组
联合数组是一组键值对,每个键是一个*唯*一*的索引,索引的数据类型可以是字符串类型或整型。索引以排序顺序存储,而不是创建顺序。 和数据库表相似的是:l 用户可以在不知道其位置的情况下访问它们。而与数据库表不同的是:l 关联数组不需要磁盘空间。l 不能用 DML 语句操作。联合数组语法如下:举例:DECLARE --
lightdb的merge into使用介绍
MERGE 操作可以将源表和目标表中的记录进行合并,当源表和目标表的记录匹配时,对匹配的记录可以进行更新操作,当源表和目标表的记录不匹配时,可以将源表中不匹配的记录插入到目标表中。但是必须对目标表拥有 INSERT 和 UPDATE 权限,对源表拥有SELECT 权限。具体语法定义如下:MERGE INTO target_table_name [ [&nbs