首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何高效使用YashanDB PL语言?这5点建议值得收藏

而在互联网行业,选择PL语言来实现业务逻辑的几乎绝迹,替代的是,业务广泛通过各种CRUD技术中间件 + JDBC,将业务的逻辑实现转移到数据库之外。...YashanDB作为一款全自研的数据库,从Oracle兼容性角度上技术具备一定优势。经过几年不断的打磨,在PL语言特性上已初露头角。...目前已推出的YashanDB数据库版本PL特性具备以下优点: 高度SQL集成; 完整的可编程逻辑; 高性能; 便捷的可调试性。 以下将围绕上述优点,展开描述YashanDB PL语言实现范围。...当依赖对象发生DDL,比如一个表动态增删了列,那么依据这个表的查询绑定的游标,其继承属性可能就会发生变化。...此外在YashanDB PL语言实现过程中,我们发现这种问题,也及时做出了一些应对措施,比如通过松耦合操作,及时剪断病毒式的传染。

7010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    oracle补充

    视图犹如数据表的窗户,用户只能查看他们可以看到的数据,视图不是数据表,它仅是一些SQL查询语句集合,作用是按照不同的要求从数据表中提取不同的数据。...to 保存点名; Oracle 数据备份与还原 exp命令用于把数据从远程数据库服务器导出至本地,生成dmp文件 imp命令用于把本地的数据库dmp文件从本地导入到远程的Oracle数据库中 将数据库中的表导出...dmp文件,导入数据库中 imp hh/hh@orcl file=E:/lvling.dmp tables=(lvling) --注意:导入导出时,用同一用户,同一表空间 将数据库中yy用户表导出,生成...'; Oracle 游标 游标是从数据表中取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行各种操作,...2)将指针指向第一条记录 提取游标数据 fetch 游标名 into 变量1,变量2,……; 关闭游标 close 游标名; 游标属性 游标提供一些属性可以帮助编写PL/SQL 程序,游标属性的使用方法为

    3.1K30

    游标和触发器

    本章将学习oracle游标和触发器。在实际开发过程中,有一些复杂的逻辑必须对表中每一条记录分别进行单独处理,此时必须使用游标。游标提供了一种用于实现更加复杂的业务逻辑的途径。游标是指向上下文的指针。...为此,PL/SQL 中引入了游标 (cursor)的概念,使用游标来协调这两种不同的处理方式。...开发人员可以在应用中直接使用PL/SQL游标变量。在PL/SQL块中使用游标变量包括定义游标变量、打开游标、提取游标数据、关闭游标4个阶段,具体步骤如下: 1....一个表上最多可有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。并各触发器之间不能有矛盾。 3. 在一个表上的触发器越多,对在该表上的DML操作的性能影响就越大。 4....示例6.9:限制对Departments表修改(包括INSERT,DELETE,UPDATE)的时间范围,即不允许在非工作时间修改departments表。

    6310

    FORALL 之 SAVE EXCEPTIONS 子句应用一例

    2、需要将数据库A的一些表的数据同步到数据库B对应的目的表       3、如果同步的过程中出现某条特定的记录错误,则写该记录产生的错误信息(含表名,主键)到日志表,并将其原表同步状态更新为N,否则更新为...FORALL 语句 批量SQL之 BULK COLLECT 子句 PL/SQL 集合的初始化与赋值 PL/SQL 联合数组与嵌套表 PL/SQL 变长数组 PL/SQL --> PL/SQL...-->声明游标从源表取数据 IS SELECT empno, ename, sal FROM emp_source WHERE...scott@CNMMBO> @test_bulk_ins_err -->将源表记录同步到目标表 PL/SQL procedure successfully...其次是源表使用状态标志位便于判断相应的记录同步成功的情况 3、同时结合了FORALL 与BULK COLLECT INTO批量SQL方法,且在使用游标打开集合时使用LIMIT子句来减小内存过度开销 4、

    79710

    Oracle存储过程详解(一)

    时,将下标指定为负数 VALUE_ERROR 赋值时,变量长度不足以容纳实际数据 LOGIN_DENIED PL/SQL 应用程序连接到 oracle 数据库时,提供了不正确的用户名或密码 NOT_LOGGED_ON...PL/SQL 应用程序在没有连接 oralce 数据库的情况下访问数据 PROGRAM_ERROR PL/SQL 内部问题,可能需要重装数据字典& pl..../SQL系统包 ROWTYPE_MISMATCH 宿主游标变量与 PL/SQL 游标变量的返回类型不兼容 SELF_IS_NULL 使用对象类型时,在 null 对象上调用对象方法 STORAGE_ERROR...用pl/sql developer debug 连接数据库后建立一个Test WINDOW,在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试 关于oracle存储过程的若干问题备忘 1...也许,是怕和oracle中的存储过程中的关键字as冲突的问题吧 2.在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了。

    1.9K30

    PLSQ编程

    -1---ORA-00001: 违反唯一约束条件 (SCOTT.PK_EMP) 游标 在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现 为了处理 SQL 语句,ORACLE 必须分配一片叫上下文...PL/SQL 程序不能用OPEN 语句重复打开一个游标。 提取游标数据 就是检索结果集合中的数据行,放入指定的输出变量中。...而对于非查询语句,如修改、删除操作,则由ORACLE 系统自动地为这些操作设置游标并创建其工作区, 这些由系统隐含创建的游标称为隐式游标,隐式游标的名字为SQL 隐式游标属性 SQL%FOUND 布尔型属性...SQL命令执行完毕立即关闭隐式游标。 –删除EMP 表中某部门的所有员工,如果该部门中已没有员工,则在DEPT 表中删除该部门。...过程和函数的唯一区别是函数总向调用者返回数据,而过程则不返回数据。 存储过程的参数特性: 函数 函数将处理从程序的调用部分传递给它的信息,然后返回单个值。

    1.5K10

    Oracle之PLSQL学习笔记

    PL---Procedural Language. SQL—Structure QueryLanguage。PL/SQL包括过程化语句和SQL语句     PL/SQL的单位:块。...块的三个组成部分: 一:定义部分(declare) PL/SQL中使用的变量,常量,游标和异常的名字都必须先定义后使用。...变量将遵循下面的类型声明: 1.  已声明过的变量类型 2. ...2、    游标的分类     a)  隐式游标:PL/SQL隐式建立并管理这一游标。     b)  显示游标:由程序员定义并控制,从数据库中读出多行数据,并从多行数据中一行一行的处理。   ...cursor_name;     b)  使用游标之前应打开游标     c)  打开游标实际上是执行定义游标时的SELECT语句,将查询结果检索到工作区中。

    1.2K80

    关于IvorySQL和OpenGauss包SPEC与集合类型的一些思考

    : 变量:变量需要能够作用于所有PL代码中,PG中没有全局变量的这种概念,又因为PL的插件式设计和SQL层解耦,PL变量就算给SQL使用一般也只能用回调(PL的datums拼SQL的params)。...游标:PG原生支持SQL层在事务内使用declare/fetch语法定义SQL层游标,但必须在事务块内;PG也支持在PL函数内定义游标,但能再当前函数内使用,不能跨函数。...在PL层使用时,例如 a := pkg.g_var;,在PL parse时对二段解析增加搜索包命名空间的逻辑即可,不要发生deep copy,将包的datums拷贝到自己的datums中,这样的话会变得非常复杂...关联数组:功能等价与哈希表, 高斯实现了类似于指针数组的功能,避免了PG多维数组的维度锁死的问题(第一次使用定义维度,后面无法修改),实现较为合理:《分析openGauss包内集合类型的实现方法》 IvorySQL...SQL的嵌套表和动态数组 SQL层和PL层使用一套逻辑 SQL层和PL层需要使用两套不同的逻辑 原因1:SQL层的表类型用多维嵌套表需要落盘,且需要当做标准类型放在pg_type中才能最大化利用

    18320

    PLSQL 游标变量

    游标是静态的,而游标变量是动态的,因为游标变量并不与某个特定的查询相绑定。所以,游标变量可以打开任何类型兼容的查询。其次可以将游标变量作为参数传递给本地和存储子程序。本文主要描述游标变量的使用。...我们可以用显式游标为工作区命名然后访问相关的信息;或者声明指向工作区的一个游标变量。无论在什么地方使用游标,它总是指向同一个查询工作区,而游标变量则可以指向不同的工作区。    ...二、游标变量使用的情形     PL/SQL 存储子程序和各种客户端之间可以使用游标变量来传递查询结果,这是游标变量最主要的作用。...如果客户端含有PL/SQL 引擎,那么从客户端调用服务器端就不会有什么约束。假如我们在客户端声明游标变量,在服务器端打开并取得数据,然后把取得的结果返回给客户端。...REF CURSOR适合于只依赖于SQL语句中(不是PL/SQL语句中)变   量的查询 8、不能在联合数组、嵌套表、或者变长数组中存储游标变量 9、如果向PL/SQL传递主机游标变量,不能在服务器检索它

    1.3K40

    大话数据库编程规范

    规则1.3.3.2 避免将复杂的SQL 语句写到同一行,建议要在关键字和谓词处换行。 规则1.3.3.3 相对独立的程序块之间必须加空行。...规则 1.3.4.3 当一个PL/SQL 或SQL 语句中涉及到多个表时,始终使用别名来限定表名和字段名,这使其它人阅读起来更方便,避免了含义模糊的引用,并能够别名中清晰地判断出表名和相关字段名。...其实很简单定义,我定义了一些对应的临时表,把游标遍历替换成SQL 的集合操作,把整个的一个大事务分割成若干小事务,只是修改了部分代码,结果执行时间就变成了短短的3 分钟。...当然游标也并非不可触及的,既然存在就有他存在的理由。 1.7 语法规范 良好的语法规范有助于书写出高效、完备的PL/SQL 程序,同时有助于提高系统的容错性、健壮性、可追溯性。...关于处理的优先级 1、 静态SQL> 动态SQL 2、 绑定变量的SQL> 动态SQL (在OLTP 系统中建议这么做) 3、 SQL>PL/SQL 的过程,极端复杂的SQL 除外 4、 SQL> 游标遍历

    50350

    【DB笔试面试578】在Oracle中,什么是会话游标?会话游标和共享游标的区别有哪些?会话游标分为哪几类?

    在目标SQL的执行过程中,会话游标起承上启下的作用。...因为Oracle依靠会话游标来将目标SQL所涉及的数据从Buffer Cache的对应数据块读到PGA里,然后在PGA里做后续的排序、表连接等处理,最后将最终的处理结果返回给用户,所以,会话游标是当前会话解析和执行...显式游标 当执行一条DML语句后,DML语句的结果保存在这四个游标属性中,这些属性用于控制程序流程或者了解程序的状态。当运行DML语句时,PL/SQL打开一个内建游标并处理结果。...需要注意的是,若游标属于隐式游标,则在PL/SQL中可以直接使用上表中的属性,若游标属于显式游标,则上表中的属性里“SQL%”需要替换为自定义显式游标的名称。上表中的这4个属性对于动态游标依然适用。...关于参数SESSION_CACHED_CURSORS需要注意以下几点: ① Oracle会用LRU算法来管理这些已缓存的会话游标(从会话游标的dump文件中可以证实这一点),所以即便某个Session以

    1.5K30

    PLSQL --> 游标

    返回到目前为止,已经从游标缓冲区中提取到数据的行数 二、显示游标应用示例 --例:浏览数据,输入职位,查看每个人工资(使用fetch cursor_name into来提取单行记录) scott...varchar2(10); --定义PL/SQL表类型 4 ename_table ename_table_type; --定义PL/SQL表变量存放游标数据 5 cursor emp_cur...,以防止其它用户在相应行上执行DML操作 OF :子句用于游标子查询到多张表时来确定哪些表要加锁,如未指定,则select语句所引用的全部表将被加锁 NOWAIT :子句指定不等待锁 使用DML语句操作游标中的当前行时...WHERE CURRENT OF cursor_name; DELETE tbname WHERE CURRENT OF cursor_name; --例:使用游标修改所有记录的工资,根据JOB来作不同的修改...--> 游标 PL/SQL -->隐式游标(SQL%FOUND) PL/SQL --> 异常处理(Exception) PL/SQL --> PL/SQL记录 PL/SQL --> 包的创建与管理 PL

    1K20

    oracle游标的使用详解_oracle游标失效

    1、游标的概念 游标(CURSOR):游标是把从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行各种操作...2、游标的作用 游标是用来处理使用SELECT语句从数据库中检索到的多行记录的工具。借助于游标的功能,数据库应用程序可以对一组记录逐条进行处理,每次处理一行。...,否则为FALSE %NOTFOUND 布尔型属性,当SQL语句没有影响的行时为TRUE,否则为FALSE %ISOPEN 布尔型属性,当游标已打开时返回TRUE,否则为FALSE(对用户而言,隐式游标永远是...游标的属性只能在PL/SQL块中使用,而不能在SQL语句中使用 例1 将PRODUCTS表中类型为1的所有产品的单价打9折,并显示该更新所影响的行数....在PL/SQL 中,使用游标变量包括定定义游标引用类型(REF CURSOR),声明游标变量,打开游标变量、检索游标变量、关闭游标变量等几个基本步骤。

    1.8K40

    PLSQL -->隐式游标(SQL%FOUND)

    --=============================== -- PL/SQL -->隐式游标(SQL%FOUND) --=============================== 在PL.../SQL中,游标的使用分为两种,一种是显示游标,一种是隐式游标,显示游标的使用需要事先使用declare来进行声明,其过程包括 声明游标,打开游标,从游标提取数据,关闭游标。...code is executed successful PL/SQL procedure successfully completed 2.SQL游标的综合应用(根据SQL游标的不同属性返回不同的结果...SELECT INTO处理的结果包括两种种情况 查询结果返回单行,SELECT INTO被成功执行 查询结果没有返回行,PL/SQL将抛出no_data_found异常 查询结果返回多行,PL/SQL...将抛出too_many_rows 异常 对于上述两种异常发生时,类似于普通异常处理,程序控制权转移到异常处理部分(如没有异常处理则程序中断)。

    1.4K30

    【DB笔试面试445】Oracle中的异常可以分为哪几类?

    Oracle将异常分为预定义异常、非预定义异常和自定义异常三种。...试图打开一个已存在的游标 ORA-06530 ACCESS_INTO_NULL 试图为NULL对象的属性赋值 ORA-01012 NOT_LOGGED_ON 没有连接到Oracle ORA-01001...赋值操作,变量长度不足,触发该异常 ORA-06504 ROWTYPE_MISMATCH 宿主游标变量与PL/SQL变量有不兼容行类型 ORA-06531 COLLECTION_IS_NULL 试图给没有初始化的嵌套表变量或者...使用预定义异常只能处理系统预定义的20多个Oracle错误,而当使用PL/SQL开发应用程序时,可能会遇到其它的一些Oracle错误。例如,在PL/SQL块中执行DML语句时,违反了约束规定等等。...Oracle提供了2个函数SQLCODE和SQLERRM用于返回错误信息: l SQLCODE:返回错误代码 l SQLERRM:返回与错误代码关联的消息 这样就可以在错误日志表中记录程序在执行过程中发生的错误信息了

    1.8K10

    【MOS】library cache lock 等待事件 原因和解决方案 (Doc ID 2896611.1)

    解决方案: 将频繁使用的较大的PL/SQL对象或者游标保持在共享池中(Pin) 可以使用 DBMS_SHARED_POOL.KEEP() procedure 将较大的且经常使用的 PL/SQL 对象和...原因: 跨越多个会话进行对象编译 一个或者多个会话在编译对象(通常时PL/SQL)的同时,其他会话为了执行或者编译同一个对象,pin住了它,那么这些会话将会以共享模式(执行)或者独占模式(编译或者更改对象...原因: 大量使用行触发器 频繁的触发行触发器会导致比正常情况更多的 Library cache 活动,原因是需要检查是否正在读取发生修改的表。...在触发器处理的过程中,可能会引用发生修改的表,即由触发器SQL修改的表。这会让数据库处于不一致的状态,导致ORA-4091的错误。...将 CURSOR_SHARING 更改为 FORCE 很容易,但重写应用程序的 SQL 语句所涉及的工作量要多一些。 风险细节 : 取决于修改内容。

    1K10
    领券