关于ORA-30625: method dispatch on NULL SELF argument is disallowed

文章目录

  • 1. 创建type
  • 2. 创建测试表
  • 3. 创建type body
  • 4. insert 测试数据
  • 5. 引用type并执行
  • 6.原因
  • 7. 正确的方式

JOB 频繁出现ORA-30625:method dispatch on NULL SELF argument is disallowed。

这篇文章将对此错误进行重现并分析其原因

1. 创建type

CREATE OR REPLACE TYPE EMPLOYEE_TP AS OBJECT(EMPLOYEE_ID NUMBER, IN_DATE DATE, MGR_ID NUMBER(1), DEPT_NO NUMBER(1), member procedure delete_employee_id(n in number) ); 

2. 创建测试表

CREATE TABLE EMPLOYEE OF EMPLOYEE_TP(EMPLOYEE_ID PRIMARY KEY 
); 

3. 创建type body

create or replace type body EMPLOYEE_TP as member procedure delete_employee_id(n in number) is begin DELETE FROM EMPLOYEE E WHERE E.EMPLOYEE_ID = n; end; 
end; 

4. insert 测试数据

insert into EMPLOYEE values (EMPLOYEE_TP(1,TO_DATE('12/12/12','DD-MM-YY'),0,0)); 

5. 引用type并执行

declare 
x EMPLOYEE_TP; 
begin 
x.delete_employee_id('1');
end;

输出结果如下:

ORA-30625: method dispatch on NULL SELF argument is disallowed
ORA-06512: at line 4
30625. 00000 -  "method dispatch on NULL SELF argument is disallowed"
*Cause:    A member method of a type is being invoked with a NULL SELFargument.
*Action:   Change the method invocation to pass in a valid self argument.

6.原因

User-defined types, just like collections, are atomically null, until you initialize the object by calling the constructor for its object type
用户定义的type,就像集合一样,在原子上是null的,直到通过调用其对象类型的构造函数来初始化该对象

也就是说对于自定义的type,需要使用构造函数进行初始化后才能调用其方法

所以,你需要这样做:

7. 正确的方式

declare 
x employee_tp :=NEW employee_tp(null,null,null,null);  
begin 
x.delete_employee_id('1');
end;

结果输出如下:

已順利完成 PL/SQL 程序.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏行业洞察:分布式开源爬虫项目在数据采集与分析中的应用案例介绍

前言 我在领导一个为游戏行业巨头提供数据采集服务的项目中,我们面临着实时数据需求和大规模数据处理的挑战。我们构建了一个基于开源分布式爬虫技术的自动化平台,实现了高效、准确的数据采集。通过自然语言处理技术,我们确保了数据的质量和…

【PostgreSQL实现psql连接时候提示用户的密码有效时间】

如下内容使用session_exec插件结合自定函数实现。类似于触发器的原理。 功能需要严格在测试环境测试后,才可在正式环境使用。没有相关要求,还是建议直接查询pg_roles/pg_authid/pg_user; 一、判断是否需要修改用户密码和有效期的检查SQL 首…

【Emgu CV教程】7.1、图像锐化之Laplacian(拉普拉斯)算子锐化

文章目录 一、介绍二、举例1.原始素材2.代码3.运行结果 一、介绍 前面几篇讲的是图像平滑,就是抑制或消除噪声,并使得图像亮度及颜色变化更平缓的操作。在图像处理领域,与平滑操作相对应的,叫图像锐化。 图像锐化就是增强图像的边…

python OpenCV:seamlessClone泊松融合

一、seamlessClone函数的用法 翻译 https://www.learnopencv.com/seamless-cloning-using-opencv-python-cpp/ def seamlessClone(src, dst, mask, p, flags, blendNone): # real signature unknown; restored from __doc__"""seamlessClone(src, dst, mask, …

【Hudi】Upsert原理

17张图带你彻底理解Hudi Upsert原理 1.开始提交:判断上次任务是否失败,如果失败会触发回滚操作。然后会根据当前时间生成一个事务开始的请求标识元数据。2.构造HoodieRecord Rdd对象:Hudi 会根据元数据信息构造HoodieRecord Rdd 对象&#xf…

2024年【起重机司机(限桥式起重机)】试题及解析及起重机司机(限桥式起重机)证考试

题库来源:安全生产模拟考试一点通公众号小程序 起重机司机(限桥式起重机)试题及解析考前必练!安全生产模拟考试一点通每个月更新起重机司机(限桥式起重机)证考试题目及答案!多做几遍,其实通过起重机司机(限桥式起重机)理论考试很…

Django里写一个get请求

在Django中处理GET请求也是很直接的。默认情况下,Django的视图(view)会处理GET请求。要创建一个简单的GET请求处理器,你可以按照以下步骤: 首先,确保你已经创建了一个Django项目。 在你的应用中创建一个视…

linux ext3/ext4文件系统(part2 jbd2)

概述 jbd2(journal block device 2)是为块存储设计的 wal 机制,它为要写设备的buffer绑定了一个journal_head,这个journal_head与一个transaction绑定,随着事务状态的转移(运行,生成日志&#…

我为什么不喜欢关电脑?

程序员为什么不喜欢关电脑? 你是否注意到,程序员们似乎从不关电脑?别以为他们是电脑上瘾,实则是有他们自己的原因!让我们一起揭秘背后的原因,看看程序员们真正的“英雄”本色! 一、上大学时。 …

Backtrader 量化回测实践(1)—— 架构理解和MACD/KDJ混合指标

Backtrader 量化回测实践(1)—— 架构理解和MACD/KDJ混合指标 按Backtrader的架构组织,整理了一个代码,包括了Backtrader所有的功能点,原来总是使用SMA最简单的指标,现在稍微增加了复杂性,用MA…

k8s除了可以直接运行docker镜像之外,还可以运行什么? springboot项目打包成的压缩包可以直接运行在docker容器中吗?

Kubernetes(k8s)主要设计用于自动部署、扩展和管理容器化应用程序。虽然它与Docker容器最为密切相关,Kubernetes实际上是与容器运行时技术无关的,这意味着它不仅仅能够管理Docker容器。Kubernetes支持多种容器运行时,包…

[office] EXCEL表格不能使用键盘箭头切换单元格该怎么解决- #媒体#经验分享#知识分享

EXCEL表格不能使用键盘箭头切换单元格该怎么解决? EXCEL表格不能使用键盘箭头切换单元格该怎么解决? 1、入下图所示的键盘。 图中红色标记“1”的地方是Scroll Lock指示灯。Scroll Lock就是“滚动锁定”的意思。当该指示灯亮起来的时候,在excel表格中操…

Android 面试问题 2024 版(其一)

Android 面试问题 2024 版(其一) 一、Java 和 Kotlin二、安卓组件三、用户界面 (UI) 开发四、安卓应用架构五、网络和数据持久性 一、Java 和 Kotlin Java 中的抽象类和接口有什么区别? 答:抽象类是不能实例化的类,它…

Tomcat反向代理集群配置与应用深入讲解

Tomcat反向代理集群配置与应用深入讲解 一、概述 本文将详细介绍如何使用Tomcat实现反向代理集群的配置和应用。通过本文的学习,你将掌握如何搭建一个高性能、高可用的Web应用集群,并了解Tomcat反向代理集群的原理和配置方法。 二、反向代理集群原理 …

CSS的全局值 initial inherit revert overlay unset

在CSS中,全局值是一组特殊的值,可以应用于大多数的CSS属性,用于改变这些属性的默认值、继承行为或重置为浏览器的默认样式。不过,需要注意的是,overlay 并不是一个标准的或广泛支持的全局值。以下是关于 initial、inhe…

使用IntelliJ IDEA查看接口的全部实现方法

在大型Java项目中,经常会使用接口和抽象类进行代码设计。为了更好地了解代码结构和功能,我们需要快速查看一个接口的所有实现类。IntelliJ IDEA提供了一些方便的方法来实现这一目标。 1. 点击查看接口的实现子类 在IDEA中,你可以轻松地查看…

一些用 GPT 翻译的计算机科学/人工智能 PDF 讲义

3D成像.pdf3D成像技术.pdf3D点云分析.pdfAAAI 2019 笔记.pdfCMU 10.708 概率图模型讲义.pdfCMU 15-312 编程语言基础讲义.pdfCMU 15-411 编译器设计讲义.pdfCMU 15-819 同伦类型论讲义.pdfCMU 15-819O 程序分析讲义.pdfCUNY CSci335 软件设计与分析 3 讲义.pdfDixie IT4500 信息…

大话设计模式——2.简单工厂模式(Simple Factory Pattern)

定义:又称静态工厂方法,可以根据参数的不同返回不同类的实例,专门定义一个类(工厂类)来负责创建其他类的实例可通过类名直接调用,被创建的实例通常具有共同的父类。 UML图: 例子: 计…

计算机视觉的应用24-ResNet网络与DenseNet网络的对比学习,我们该如何选择。

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用24-ResNet网络与DenseNet网络的对比学习,我们该如何选择。在计算机视觉领域,ResNet(残差网络)和DenseNet(密集网络)都是深度学…

Java设计模式——责任链模式

当一个请求需要在多个对象之间传递,每个对象都可能处理该请求或将其传递给下一个对象。在这种情况下,需要避免将发送者与接收者之间的耦合,以及确定请求的处理方式。此时可使用责任链模式,它的优点有降低耦合度(无需关…