首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    FORALL 之 SAVE EXCEPTIONS 子句应用一例

    对于大批量的DML操作中出现的错误,除了使用DML error logging特性来记录在DML期间出现的错误之外,使用批量SQL语句FORALL的SAVE EXCEPTIONS是不错的选择之一...2、需要将数据库A的一些表的数据同步到数据库B对应的目的表       3、如果同步的过程中出现某条特定的记录错误,则写该记录产生的错误信息(含表名,主键)到日志表,并将其原表同步状态更新为N,否则更新为...,未成功插入的到目标表的记录写入到日志,含有表名以及主键,插入时对应的错误信息 scott@CNMMBO> select * from err_log_tbl; LOG_SEQ LOG_TIME...-02290: check constraint (.) violated 三、总结 1、上面的代码成功的实现了数据之间的同步问题(不同数据库使用DB LINK),且将同步期间的错误信息记录到日志表...使用了通过标识错误异常位置的debugpos变量来便于查找那个地方或那几行代码引发异常 5、注意处理error信息时,通过TO_CHAR (emp_tab (SQL%BULK_EXCEPTIONS (i

    79710

    PLSQL学习笔记-异常处理

    '); end; 这段程序当检索到数据的时候就输出数据 检索不到数据即输出  没有找到数据 no_data_found 是一个预定义异常错误类型 更多预定义异常错误,请看: http://www.cnblogs.com...sqlerrm为oracle反馈的错误信息 此程序输出: -1400 ORA-01400: 无法将 NULL 插入 ("LABOR"."...v_exception exception; pragma exception_init(v_exception,-1400); begin insert into labor.xland values(null...dbms_output.put_line('没有找到数据1'); end; 这里提到了一个新的数据类型  exception pragma exception_init(name,errcode...) 把错误号为-1400的错误赋值给v_exception 在第二个when子句中不能使用sqlcode等系统变量 三:自定义异常并抛出 先看代码 declare v_exception EXCEPTION

    32930

    Flink 实现 MySQL CDC 动态同步表结构

    DebeziumDeserializationSchema 是用于转换 binlog 数据到 RowData 的核心接口,创建这个类时传入了 Flink SQL 定义的物理 Schema(封装为 RowType...在最核心的转换方法中,Flink 通过 rowType.getFieldNames 获取到了 SQL 定义好的 fieldNames,并在后续的转换函数中通过 fieldName 来读取 binlog...的 schema 和 value,因此当数据库的表结构发生变更时,binlog 数据中即使已经有了新增的 schema 结构与数据,但因为 fieldNames 依然还是旧的,因此无法获取到新的变更。...解决方案 既然 Flink SQL 无法实现需求,那么很容易想到,使用 JAR 作业进行一些自定义扩展是非常适合这个场景的。...JSON 中,通过语句在数据库中新增一个字段,并插入一条新数据: ALTER TABLE my_test ADD f_added_string varchar(255) NOT NULL DEFAULT

    7.6K30

    Oracle数据库之第四篇

    数据库中叫做 例外 异常的分类 1.系统异常 系统定义好的异常 2.自定义的异常 new 自定义类继承Exception 自定义传值(错误代码...要插入的记录 修改后的记录 空 :old 动作之前的记录 空 原始的记录 原始的记录 */ --创建触发器监视表,如果表中有数据插入...; end; ----插入数据测试效果 insert into p values(1,'zs'); commit; --插入数据不能在休息日插入数据 --休息日 周六和周日 /* raise_application_error...raise_application_error(-20001,'不能休息日插入数据'); end if; end; ----插入数据测试效果 insert into p values...emp set sal=sal-1 where empno=7499; /* 触发器实际应用 使用触发器实现 插入数据的id 自增长 面试题 **/ create or replace

    94710

    【PLSQL编程基础】

    使用%type定义变量 使用%rowtype声明变量,可以定义表中一行记录的类型 运算符: 掌握变量的声明和使用 掌握%type和%rowtype的使用 PL/SQL分支语句 if/else...,无法处理 2、运行时异常:用户可以处理的只有运行时异常 异常处理要使用EXCEPTION子句处理,通过when子句对异常处理 when 异常类型|用户自定义异常|异常代码|other then 异常处理...成员名 数据类型 [[not null][:=默认值] 表达式] ) 嵌套记录类型 雇员中包含部门信息 插入复合数据类型 insert into dept values v_dept 更新复合数据类型...|varchar2] 访问没有定义的索引,会出现数据找不到的异常,但是索引的下标不是顺序的,所以索引值可能不存在,一次提供exists(index)判断是否存在 范例:使用字符串作为字符索引 范例:使用...rowtype数组 范例:使用记录类型数组 嵌套表:(跳过)start 1、定义简单类型的嵌套表 CREATE [OR REPLACE] TYPE 类型名称 AS|IS TABLE OF 数据类型

    84740

    Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查

    今天在使用数据库的时候,遇到一个场景,即在插入数据完成后需要返回此数据对应的自增主键id,但是在使用Mybatis中的generatedKey且确认各项配置均正确无误的情况下,每次插入成功后,返回的都是...终于凭借着一次Debugg发现的问题,原来在使用Mabatis中的insert或者insertSelective方式插入时,如使用int insert(TestGenKey testGenKey)时,返回值...int表示的是插入操作受影响的行数,而不是指的自增长id,那么返回的自增id到底去哪里了呢?...通过下面的Debugg我们知道自增id返回到testGenKey的原对象中去了。 举例示范配置 数据库示例表  generator的配置文件 null : sex.trim(); } } 测试及Debugg 编写测试方法测试插入 插入成功后观察对应的变量对应的值 总结:调用Insert后插入操作之后,所得到自增长Id被赋值到原对象当中

    1.7K10

    海量数据迁移之sqlldr和datapump的缺点分析(r4笔记第74天)

    在数据迁移中,sql*loader和datapump总是作为一些常用的数据迁移方案,自己在经历了一些项目之后,优点就不说了,说点这些方案的缺点,批评不自由,则赞美无意义,所以我在提出了一些失败错误的经验后...数据问题,这个是sql*loader使用比较头疼的地方,因为这种加载方式老是感觉比insert的方式差一点,一旦出现错误,可以使用sql*loader提供的特定的接口来对文件修改后,重新部署。...对于lob数据的使用不够方便 如果表中含有clob,blob列,那么使用sql*loader时比较麻烦的,尽管官方说是可以支持的,我看了下繁琐的文档就准备放弃了。...可能表中已经含有一部分数据,再插入一部分数据的时候,结果出现了主键冲突。...外键数据问题/表插入数据的顺序 ORA-02291: integrity constraint (PRDAPPO.CH_OBJECT_ATTRIBUTES_1FK) violated 这种问题比较纠结

    1.6K60

    Flink cdc自定义format格式数据源

    总览 变更数据捕获 (CDC) 已成为一种流行的模式,用于从数据库捕获已提交的变更并将这些变更传播给下游消费者,例如保持多个数据存储同步并避免常见的陷阱,例如双重写入。...这意味着动态表源不再仅限于追加操作,并且可以摄取这些外部更改日志(插入事件),将它们解释为更改操作(插入、更新、删除事件)并使用更改类型将它们发送到下游。...但是,我们在使用的时候发现,其实上述三种CDC format是远远不能满足我们的需求的公司客户有各种各样的自定义CDC格式。下面列举其中一种格式,并针对此格式自定义CDC format。...比如说上述I操作,columns表示字段名称,在rows中定义多条插入数据。...该方法通过this.jsonDeserializer将原始数据反序列化为rowData,那么后续则可以通过此rowData获取原始数据中的columns、rows以及table中的值。

    1.8K10

    深入解读flink sql cdc的使用以及源码分析

    前言 CDC,Change Data Capture,变更数据获取的简称,使用CDC我们可以从数据库中获取已提交的更改并将这些更改发送到下游,供下游使用。...接下来我们进入run方法,看看是如何获取数据库的变更数据的。...总结一下,就是在Flink的source函数里,使用Debezium 引擎获取对应的数据库变更数据(SourceRecord),经过一系列的反序列化操作,最终转成了flink中的RowData对象,发送给下游...changelog format 使用场景 当我们从mysql-cdc获取数据库的变更数据,或者写了一个group by的查询的时候,这种结果数据都是不断变化的,我们如何将这些变化的数据发到只支持append..."op":"+I"} 也就是说changelog format对原生的格式进行了包装,添加了一个op字段,表示数据的操作类型,目前有以下几种: +I:插入操作。

    5.6K30

    Oracle总结【PLSQL学习】

    ); end; / 何时使用%type,何时使用%rowtype?...当定义变量时,该变量的类型与表中某字段的类型相同时,可以使用%type 当定义变量时,该变量与整个表结构完全相同时,可以使用%rowtype,此时通过变量名.字段名,可以取值变量中对应的值 项目中,常用...不难发现的是,函数是必定要有一个返回值的,当我们在调用的时候,接受返回值就直接获取就行了。 也就是说 当返回值只有一个参数的时候,那么就使用存储函数!...SQL与过程函数使用场景 【适合使用】过程函数: 》需要长期保存在数据库中 》需要被多个用户重复调用 》业务逻辑相同,只是参数不一样 》批操作大量数据,例如:批量插入很多数据 【适合使用】SQL: 》凡是上述反面...这里写图片描述 ---- 星期一到星期五,且9-20点能向数据库emp表插入数据,否则使用函数抛出异常, 语法:raise_application_error('-20000','例外原因') CREATE

    2.4K70

    Oracle学习笔记四

    一、PL/SQL编程 游标(光标Cursor) 为什么使用游标 ? 在写java程序中有集合的概念,那么在pl/sq中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据。...算术或转换错误)   timeout_on_resource(在等待资源时发生超时) 范例1:写出被0除的异常的psq程序 declare   pnum number begin   pnum:=...每当一个特定的数据操作语句( insert, update, delete)在指定的表上发出时, Oracle自动地执行触发器中定义的语句序列。...4.1 触发器的作用   1.数据确认     示例:员工涨后的工资不能少于涨前的工资   2.实施复杂的安全性检查     示例:禁止在非工作时间插入新员工   3.做审计,跟踪表上所做的数据操作等...创建序列 1、建立表 create table user (id number(6) not null, name varchar2(30) not null primary key) 2 建立序列

    1.3K31

    ORACLE游标(oracle游标属性)

    用来存储多条查询数据的一种数据结构('结果集'), 它有一个 '指针',从上往下移动('fetch'),从而能够 '遍历每条记录' 2....cur_stu_info%rowtype; begin -- 2 开启游标 open cur_stu_info; -- 3 获取数据(一次获取一行) fetch cur_stu_info...' 到值 sql%notfound 布尔型 判断游标是否 '没有获取' 到值(常用于 "退出循环") sql%rowcount 整型 '当前' 成功执行的数据行数(非 "总记录数"...; 简单说,退出循环的必要条件:fetch 语句执行成功 + 第一次 fetch 的值返回 null -- *********************************************...,'隐式游标' 的次之,'单条处理' 的最差 说明:若有兴趣,可以在数据量多的表里面,分别尝试下列三种写法,并打印时间,用作比较 1.

    1.6K30

    OushuDB-PL 过程语言-声明

    如果声明了NOT NULL,那么赋予NULL数值给该变量将导致一个运行时错误。因此所有声明为NOT NULL的变量也必须在声明时定义一个非空的缺省值。\1....如果要访问变量中的某个域字段,可以 使用点表示法,如rowvar.field,但是行类型的变量只能访问自定义字段,无法访问系统提供的隐含字 段,如OID等。...对于函数的参数,我们只能使用复合类型标识变量的数据类型。...最后需要说明的是,推 荐使用%ROWTYPE的声明方式,这样可以具有更好的可移植性,因为在Oracle的PL/SQL中也存在相同 的概念,其声明方式也为%ROWTYPE。...记录类型: 见如下形式的变量声明: 记录变量类似于行类型变量,但是它们没有预定义的结构,只能通过SELECT或FOR命令来获取实际的行 结构,因此记录变量在被初始化之前无法访问,否则将引发运行时错误。

    1K20
    领券