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

为什么我的sqlplus代码中的组合主键会出现ORA-00936错误?

ORA-00936错误是Oracle数据库的一个常见错误,它表示缺少了必需的表达式。在SQL语句中,ORA-00936错误通常发生在以下情况下:

  1. 缺少关键字或表达式:在SQL语句中,每个关键字和表达式都是必需的,缺少任何一个都会导致ORA-00936错误。请检查你的SQL语句,确保每个关键字和表达式都正确且完整。
  2. 语法错误:有时候,ORA-00936错误可能是由于语法错误引起的。请仔细检查你的SQL语句,确保语法正确,包括正确的括号匹配、正确的引号使用等。
  3. 表名或列名错误:如果你在SQL语句中引用了不存在的表名或列名,也会导致ORA-00936错误。请检查你的SQL语句,确保引用的表名和列名是正确的。
  4. 表达式缺失:有时候,ORA-00936错误可能是由于缺少必需的表达式引起的。请检查你的SQL语句,确保每个必需的表达式都包含在内。

对于你提到的sqlplus代码中的组合主键出现ORA-00936错误的情况,可能是由于以下原因导致的:

  1. 缺少必需的列名:在创建表时定义了组合主键,但在插入数据时没有指定所有组合主键的列名和值。请检查你的插入语句,确保指定了所有组合主键的列名和值。
  2. 列名顺序错误:在插入数据时,如果指定的列名顺序与创建表时定义的组合主键的列名顺序不一致,也会导致ORA-00936错误。请检查你的插入语句,确保列名的顺序与组合主键定义的顺序一致。
  3. 列名错误:如果在插入数据时指定了不存在的列名作为组合主键的列名,也会导致ORA-00936错误。请检查你的插入语句,确保指定的列名是正确的。

总结起来,ORA-00936错误通常是由于缺少必需的表达式、语法错误、表名或列名错误、表达式缺失等引起的。在处理这个错误时,你需要仔细检查你的SQL语句,确保语法正确,表名和列名正确,必需的表达式完整,并正确指定组合主键的列名和值。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么if-else影响代码复杂度

关于if-else争议 之前写了一篇文章《用规则引擎消除if语句,提高了代码可扩展性》,这篇文章想阐述观点是复杂if语句可能影响代码阅读和代码扩展性,会将非业务条件逻辑与业务逻辑混合在一起...时间长了代码越来越臃肿,因此这种情况下推荐使用一些设计模式例如策略模式,责任链模式等去优化if语句带来问题,文中发现使用规则引擎也能实现类似效果,因此介绍了怎么使用规则引擎Easy Rules去取代...if-else增加了代码复杂度 文章发布后,有很大一部分读者认为只用设计模式增加代码阅读性,还是觉得if-else好,就算if写得再复杂,也要使用if-else。...实际工作,能见到一个方法包含10个、20个甚至更多逻辑分支情况。...从软件设计角度讲,代码存在过多 if-else 往往意味着这段代码违反了违反单一职责原则和开闭原则。因为在实际项目中,需求往往是不断变化,新需求也层出不穷。所以,软件系统扩展性是非常重要

1.4K10

关系型数据库之oracle

而数据库还在持续发展,逐个举例肯定行不通,因为也不知道,而且查资料找出来大家也不怎么会用到。那么我们就来搞搞我们很大几率能够用到。今天就来搞搞关系型数据库中三大经典之一oracle数据库。...数据库中常称为主键,由一个或多个列组成(多列组成也可以称为联合主键)。 关系模式:指对关系描述,其格式为:关系名(属性1,属性2,…,属性N)。在数据库通常称为表结构。...因为这些很重要,我们放在后边细细去搞。 02 — oracle实际使用 就如上边所说,我们今天文章定位就是实际使用可能遇到问题。...启动sqlplus,然后登陆数据库出现错误:TNS:协议适配器错误 原因有3个: (1).监听服务没有启动:services.msc或开始—>程序—>管理工具—>服务,打开服务面板:启动oraclehome92TNSlistener...关于基本使用我们就说到这里,后续详细跟进上边提到还有没提到知识点。

1.5K30

sqlplus登录缓慢问题分析过程及解决小记

因此,判断该系统就是在sqlplus登录时候才可能出现卡顿。 由于客户业务并未反馈使用有问题,所以当时仅将该问题记录到日常错误处理日志。...但是过了几天后,突然客户业务使用人员说,他们某功能经常出现连接超时问题。这个时候,就很肯定业务也受到了sqlplus登录缓慢所带来影响。于是专门翻出这个问题进行进一步分析和排查。...sqlplus在登录时候解析DNS,而在解析这一步耗费时间较长,从而影响了sqlplus登录过程所消耗时间。...为什么导致这么慢?此时也有点无从下手了,还好有公司二线专家,请教了二线专家后,让在strace在加入-Fr参数,更近一步去fork调用子进程。...而经过查询,发现mmap函数主要是Linux下内存映射到文件一种方法(具体该函数内容和功能,没有详细研究),因此可以猜测,sqlplus登录缓慢问题,可能出现在内存映射上。

1.2K71

一个执行计划异常变更案例 - 外传之查询执行计划几种方法

执行计划定义:执行目标SQL所有步骤组合。 有很多查看执行计划方法,不仅局限于以下几种。...Outline Data主要是执行SQL时用于固定执行计划内部HINT组合,可以将这部分内容摘出来加到目标SQL以固定其执行计划。...oradebug有很多需要说,首先这是sqlplus特有的命令,在PLSQL Developer执行会提示无效SQL语句,例如: ?...,下面简单看看trace文件都包含了什么,为什么说10046这种事件是用于调试现在不能精通所有内容,大概谈谈理解。...BY INDEX ROWID TEST1,想原因应该是: (a) 对TEST2表扫描使用是INDEX FULL SCAN SYS_C0016790,即使用索引全扫描,扫描t1id主键索引数据块。

58740

连接远程数据库ORACLE11g,错误百出!

客户机PLSQL DEV访问虚拟机ORACLE11g,错误百出! 创建时间: 2017/10/14 18:44 作者: CNSIMO 标签: ORACLE 忙了一下午,只有两个字形容:麻烦!...安装ORACLE1g 首先,已经提前在虚拟机上配置了windows2008+oracle11g,为什么用server2008呢?...首先使用DCA(在oRACLE开始菜单文件夹里面,缩写哦),打开后会显示几个选项,选择【创建数据库】,然后下一步,之后几个步骤一直到创建数据库完毕,并没有出任何错误,所以就不多说了,唯一出现错误可能就是提示类似...在Net Manager或者NCA更改监听或者服务名信息后可能映射到这两个文件,例如我在Net Manager更改了LISTEN地址,在listener.ora文件是有体现,可以打开看看,...,例如我通过sqlplus连接时候将STD.CNSIMO.CN改为STD或者其它随便一个,都会报这个错误

75400

连接远程数据库ORACLE11g,错误百出!

客户机PLSQL DEV访问虚拟机ORACLE11g,错误百出! 创建时间: 2017/10/14 18:44 作者: CNSIMO 标签: ORACLE 忙了一下午,只有两个字形容:麻烦!...安装ORACLE1g 首先,已经提前在虚拟机上配置了windows2008+oracle11g,为什么用server2008呢?...首先使用DCA(在oRACLE开始菜单文件夹里面,缩写哦),打开后会显示几个选项,选择【创建数据库】,然后下一步,之后几个步骤一直到创建数据库完毕,并没有出任何错误,所以就不多说了,唯一出现错误可能就是提示类似...在Net Manager或者NCA更改监听或者服务名信息后可能映射到这两个文件,例如我在Net Manager更改了LISTEN地址,在listener.ora文件是有体现,可以打开看看,...,例如我通过sqlplus连接时候将STD.CNSIMO.CN改为STD或者其它随便一个,都会报这个错误

1.5K00

复盘eygle在甲骨文大会上演讲示例,看看什么是大师由点及面

想这个案例可以带给我们一些启迪。...换句话说,如果两张表关联,其中一张表关联列是主键,那么另一张表就是事实表,也就是说另一张表列就是可更新;除非另一张表关联列也是主键,否则这张表就是不可更新,如果更新语句涉及到了这张表,就会出现...如果是两张表主键关联,那么无论更新那个表字段都可以。 其实这个限制真正原因是Oracle要确保连接后更新内容可以写到一张表,而这就要求连接方式必须是1对N或者1对1连接。...,第一次优化操作可能相对容易想到,但第二次优化操作,就需要知道可以有这种语法,而且出现了ORA-01799错误,还需要知道这种错误根本原因是什么,才能有可行解决方法。...但用如下SQL提示权限错误: UPDATE (SELECT b.name b_name, b.class b_class, a.name, a.class

50320

一次有意思错选执行计划问题定位(涉及SYS_OP_C2)

问题现象: 1. 11g库,话说有一个应用程序新上线,应用中使用了绑定变量方式执行一条简单SQL,例如select a from b where c = :x,c列是该表复合主键前导列,表定义是...在sqlplus手工执行SQL,变量使用字面值,例如select a from b where c = 'abc',执行非常快,查看执行计划,是用索引范围扫描。 初步怀疑: 1....究竟为什么应用程序运行时,这个SQL使用了全表扫描,但sqlplus执行SQL时却用索引范围扫描呢? 越来越邪乎了。。。...同样提到了这点,不是Oracle做错了,而是你可能给Oracle某些错误信息,让其出现了这种错误。...分析一个问题,要有正确思路,要能抓到问题本质,像这个问题,就是不同方式执行同一条SQL,会有不同执行计划,那么为什么Oracle选择了错误执行计划?

58020

备库搭建中一波三折(r7笔记第21天)

当服务器到了手里之后,首先就开始准备安装数据库软件,安装前基本检查很快做完了,需要预先安装依赖包看使用yum源已经识别了,也标示了yes,然后开始克隆安装。...修改后又继续开始克隆安装,这次错误更奇怪了。...甚至怀疑是不是新机器出现了什么不兼容地方,因为是比较新920机器,最后查看了一下操作日志,发现原来原装yum源时候就出了问题。...就在这种纠结,最后还是硬着头皮拖了一下,幸亏当时系统负载不算太大,所以这部分归档影响还比较小,等备库一同步完,就开始开启RFS接收归档,然后马上释放主库空间。 整个过程也是有条不紊在进行。...而文件复制较慢服务器流量情况如下,可以看到两者是相互补充。至于为什么先开始文件复制那台服务器就快很多,为什么不是平均这部分资源。自己也没有想明白。 ?

1.1K40

实战篇:Oracle分区表之在线重定义

使用在线重定义一些限制条件: 必须有足够表空间来容纳表两倍数据量。 主键列不能被修改。 表必须有主键。 必须在同一个用户下进行在线重定义。 SYS和SYSTEM用户下表无法进行在线重定义。...如果中间表有新增列,则不能有NOT NULL约束 DBMS_REDEFINITION包: ABSORT_REDEF_TABLE:清理重定义错误和中止重定义; CAN_REDEF_TABLE:检查表是否可以进行重定义...2、查看是否能够重定义 需提前确认表是否有主键,表空间是否足够: sqlplus / as sysdba ##查看主键 select cu.* from user_cons_columns cu, user_constraints...14、手动修改重命名索引 此时,原表名表已经转换为中间表,需要先将原表索引,rename到其他名字,本次是BAK,需要注意索引名称长度不能过长 sqlplus / as sysdba ALTER index...PARTITION(LUCIFER_P202201); SELECT * FROM LUCIFER PARTITION(LUCIFER_MAX); 可以发现,数据已经根据日期均匀分布在不同子分区

1.2K30

听说你在等我ARTS

为啥呢,因为这个题,有多达6种解法,代码最少解法,你们猜需要多少行代码?给你五秒钟。 5,4,3,2,1 时间到,知悉算法你知道吗?哈哈,利用先排序,后查询办法,只要2行代码。...都是插入数据 对于数据库没有该字段,两者没有区别 对于数据库中有该字段,insert会报错,save执行更新操作 若新增数据存在主键,insert()提示错误,而save()则更改原来内容为新内容...区别 若新增数据存在主键,insert()提示错误,而save()则更改原来内容为新内容 已存在数据:{_id:11,"username":"user1"},然后继续进行插入操作的话,此时 insert...({_id:11,"username":"user2"}) 抛出主键重复错误提示org.springframework.dao.DuplicateKeyException 并且不保存当前数据 save...({_id:11,"username":"user2"}) user2内容覆盖user1 相同点 如果新增数据没有主键时,增加一条记录 已存在数据:{_id:11,"username":"user1

29610

记一次线上SQL索引优化及索引选择错误原理分析

这时猜想是不是代码中有什么耗时操作: 这个代码看起来也没有什么特别耗时操作,getAgentOrderList就是执行那条SQL,getAgentStaffOrderList也试过查询很快,因为有分页...难不成又出现“灵异事件”了?这时突然想到会不会是分页导致,我们都知道limit在offset非常大情况下导致查询慢,但我们这里还没有翻页,也就是第一页,所以不是这个问题。...除此之外又想到之前看到过limit和order by连用会出现索引选择错误问题,于是在带上limit 0,30在数据库执行刚刚SQL,果不其然,慢SQL出现了。...本着“知其然还要知其所以然”原则查阅了很多资料,都没有完全能解决心中疑惑,最终自己反复尝试,总算搞明白了。 首先为什么走普通索引更快,而主键索引更慢?...(1000w条)),Mysql就认为使用普通索引更快,因为普通索引预估扫描行数只有不到1.8W条;但是加了limit之后走主键索引预估扫描行数可能少于走普通索引预估扫描行数,导致索引选择错误

58810

sqlplus登录报ORA-06502错误问题排查和解决

最近碰见了一个sqlplus登陆报错问题,一开始排查问题方向就错了,不得已,还是请教了dbsnake大师,对于这么一个小问题,就像“小罗不看人传球”般解决了问题,有因才有果,对于任何事情都成立...当然,也不是第一次受挫了,归根结底,还是碰见问题少,对于一些基础原则性知识掌握不够,不能从现象中直接看出本质,导致了方向性上错误,急也没用,慢慢积累吧,所以还是要总结一下,避免下次再犯同样错误。...问题描述: 一个11.2.0.4开发库,用户名是sqlreviewer,密码是sqlreviewer,之前一直可以用,最近出现sqlplus sqlreviewer/sqlreviewer时候,...问题到这里,可能有的朋友已经猜到大致方向了,但我开始排查方向就出了错误尝试用strace查看sqlplus执行,然并卵,尝试创建使用同样位数用户sqlreviewea,执行sqlplus登录是正常...sqlplus登录即使出现logon trigger报错,仍可以连接,不会阻止登录,但是这错误会记录在alert.log和trace文件

89430

分页控件(未完,待续)——控件件介绍及思路

C 主键 看法是每一个表都要有一个主键,而且是单一字段主键(不是复合主键)。...复合主键带来很多麻烦,应该尽量避免,方法也很简单,在原来设计上加一个自增int字段就可以了,把这个自增字段最为主键即可。 为什么提倡单一主键呢?...使用PostBack分页的话,在按“后退”时候会出现“警告: 网页已经过期”错误页面。...那么为什么不能在程序(分页控件)里面组合SQL语句不呢? 使用存储过程分页有两种方式:一是有一个要分页页面就写一个存储过程(有100个几乎就要写100个了)。...统计报表地方好像不需要了。处理好这个基本问题让您开打轻松不少吧。 3、 个人感觉 对于我个人来说,这个分页控件就是“核心”了。在写网站时候一大半时间都是在围绕分页控件来做。

93370

深入内核:Oracle数据库里SELECT操作Hang解析

10049level值可能会有如下一些组合: 这里因为要跟踪 sql 硬解析时相关表对象 library cache lock 持有情况,所以这里level 值取0x0210=0x0200|0x0010...addr 相同: 这也就意味着在添加主键整个过程,Oracle始终会以 exclusive 模式在表 scott.t2 上持有 library cache lock,直到最后主键添加完毕了才释放。...所以在 win32上10.2.0.1,在添加主键过程中会一直阻塞查询(select)操作。 我们来测一下,同时开3个session。...这就验证了我们结论:在 win32上10.2.0.1,在对表增加主键过程中会一直阻塞对这个表查询(select)操作。...)我们可以看出对表t1 library cache lock 先后持有模式为: 即大部分时间对表 scott.t1 library cache lock 持有模式都是S,最后才是X,所以这就可以解释为什么在对表

1.3K100

goldengate同步无主键无唯一索引表问题以及解决方案--更新关于附加日志

NULL,这个是不规范造成,从而造成后续数据不一致,出现常见错误1403错误. c:如果增加、删除、修改是大字段类型列,例如clob,这个列无法增加附加日志,那么则忽略附加删除删除与增加问题.但是抽取进程还是要重启来刷新数据字典缓存信息...,但每一条记录所有字段组合是唯一情况,如果存在2条记录,更新最后一条,如果源与目标记录顺序一致,那么更新会造成错误错误,如果记录顺序刚好相反,那么更新则没有问题.那么这个时候使用keycols是不合适...这个需要考虑到表结构更改以及增加字段时间,对于新表增加影响小,但是已存在大表,需要停机窗口来增加字段. 2、使用keycols来指定标识唯一值列(可以是多列),如果选出列无法满足,会出现如下情况 如果存在...2条记录,更新最后一条,如果源与目标记录顺序一致,那么更新会造成错误错误,如果记录顺序刚好相反,那么更新则没有问题.那么这个时候使用keycols是不合适,没有达到标识唯一记录,虽然速度快些,还不如去掉...keycols来保证数据完整性. 3、无主键无唯一表,表结构发生变化,必须删除附加日志,再次增加附加(针对add trandata方式增加,如果是add schematrandata不存在这个问题),否则会出现数据不一致情况

1.8K30

小议隐式转换引起问题

隐式转换(Implicit conversion) ,这个情况每个程序员都或多或少遇到过,这里结合实际情况简单描述下常见问题以及如何解决并阐述下原理。...所谓隐式转换主要出现在我们T-SQL语句中where 条件里面,我们先从原因上去看一下为什么出现隐式转换。...出现隐式转换情况和结果: 当SQL server遇到一个不匹配类型表达式时候,它有两种可能:1.使用隐式转换并能够执行;2.转换错误而导致执行失败。...在进行之前,我们先提出一个概念: 数据类型优先级 当两个不同数据类型表达式用运算符组合后,数据类型优先级规则指定将优先级较低数据类型转换为优先级较高数据类型。...当然我们也可以通过转换参数类型方式来解决这个问题,但是由与精度不同有时候产生问题,比如转换一个REAL型到INT整型  CONVERT(INT,@Real);需要注意是联接丛书页面涵盖了一个兼容性矩阵

92990
领券