oracle 字段对错,oracle 两表之间字段赋值错误解析

在做项目时,经常需要在量表之间进行字段赋值进行初始化

例如:

update TB_PER_INTERNALDISMISSION ti

set ti.C_UNITID =

nvl((select ts.C_OLDUNITID

from TB_PER_STAFFRECORD ts

where ts.c_empoid = ti.c_empoid

and ts.c_recordtype = '7'

and ts.c_recordtime =

(select max(staff.c_recordtime)

from TB_PER_STAFFRECORD staff

where staff.c_empoid = ts.c_empoid

and staff.c_recordtype = '7')

),0)

我们可以看到,在上面的代码充分估计到了空值的现象(nvl),并对可能的多条记录只取记录最新的列表,但依然可能报错

单行子查询返回多个行或者“ORA-01427:single-row subquery returns more than one row

这里就需要仔细查看自己的代码逻辑,一般来说是自己的代码逻辑出现了问题,如果确定没有问题,则可能是数据库里面存在重复数据

这就需要对重复数据进行查询

select count(1),ts.c_empoid,ts.c_recordtime

from TB_PER_STAFFRECORD ts

where ts.c_recordtype = '7'

and ts.c_recordtime =

(select max(staff.c_recordtime)

from TB_PER_STAFFRECORD staff

where staff.c_empoid = ts.c_empoid

and staff.c_recordtype = '7')

group by ts.c_empoid,ts.c_recordtime

having count(1)>1这就是对上面代码进行重复数据的查询,从而找到了重复数据

重复数据的出现可能有很多,最常见的是在代码设计阶段的循序渐进造成的,虽然不多,但报错之后影响查询,需要注意,另外一点,可以在开发阶段专门用一个测试数据库,开发完成之后再进行回滚,则可以避免这部分的内容

Oracle中Guid主键适配方案:RAW(16)与CHAR(38)实战对比 Guid(全局唯一标识符)作为分布式系统常用主键类型,在跨数据库迁移时面临类型契约不一致的核心挑战。其原理在于.NET的DbType.Guid在SQL Server中映射为UniqueIdentifier,而在Oracle中被强制转为Raw类型,触发CoerceValue()阶段因Guid未实现IConvertible导致InvalidCastException。该问题本质是NHibernate类型系统与OracleClient驱动在值绑定环节的协同失效,技术价值在于保障主键数据流的安全、可读与可调试。典型 阅读详情

相关推荐

苍穹土地利用规划建库工具网络版实操解析:从建库到汇交

在国土空间规划与GIS数据管理应用中,规划成果的数字化与标准化是数据汇交、查询统计和空间分析的基础。所谓建库,本质是将CAD等图形资料按统一坐标系统、图层分层、属性结构与编码规则,转换为规范的空间数据库。拓扑检查是保障图形质量的关键环节,能有效识别图斑重叠、缝隙与自相交等问题,而图数一致性核对则确保图形面积与规划文本指标吻合。此类技术流程广泛应用于土地利用规划数据库建设、规划成果汇交及多源GIS数据整理入库等场景。针对多人协同作业,网络化部署实现数据源唯一、权限分明,避免传统单机合并的冲突与返工。文章结合工

weixin_34210740的博客 353

Oracle将一张几个字段赋值到另一张指定字段

由于某种原因客户数据库中 trp_advp部分记录的projectname和groupname字段值丢失,由于trp_reportitem 中可以找到对应的数据,于是通过该进行数据还原.trp_advp中一条记录对应trp_reportitem中的多条记录,因此需要对trp_reportitem分组查询,赋值的条件为trp_advp.id=trp_reportitem.advp_id ......

tongxin_tongmeng的博客 3883

EXCEL实现分层自定义比例随机抽样(图+文教程)

EXCEL实现分层自定义比例随机抽样(图+文教程) 单一字段分层自定义比例随机抽样 多字段分层自定义比例随机抽样 单一字段分层自定义比例随机抽样 首先数据源如下,我们想随机抽张三的金额数据10%、李四金额20%、王五5%、哈哈15%、李六10% 首先第一步,添加辅助列,随机数 =RAND() 对数据进行高级排序 升序、降序都可以 添加辅助列...

可乐联盟 2万+

Oracle 给查出的空值(NULL) 赋值

最近做数据迁移工作,某个字段在源中为空

shuaishifu的专栏 2万+

oracle触发器添加数据时某一个字段和另一个某一个字段作比较,相等,获取另一张某个字段赋值到第一个某个字段

--- v_other_field 变量名 STEEL_NO.STEEL_NO_CODE 名.字段。---- PROCESS_MATERIAL_INFO 名。-- 相等字段做比较。--不为null赋值

a010101010101010的博客 703

oracle modify赋值,Oracle列属性修改

列属性修改1.扩充空间Alter table TableName modify fieldname varchar2(30);该种方式,字段属性必须一致,如将varchar2(20)扩充为varchar2(30),若数据中无数据,也可将number或integer或varchar2互相修改;若中存在数据,该方法不可取。2.有数据记录的列属性修改:Sql示例:alter table table...

weixin_39864373的博客 2198

数据治理全景实战

第一层:源头侧治理(业务系统端)治理对象:业务系统的数据录入、单据流转、数据产生过程核心目标:让数据"生而标准、生而质量"治理时机:数据产生时(事中防控)责任主体:业务部门 + IT系统建设部门核心原则:"不让脏数据进门"第二层:数仓侧融合处理(数据平台端)治理对象:汇聚后的数据资产、跨系统融合数据核心目标:让数据"统一、可信、可用"治理时机:数据汇聚后(事后/事中监控)责任主体:数据团队 + 数仓开发团队核心原则:"不让坏数据流到下一层"主数据定义。

weixin_40475940的博客 405

oracle字段赋值t,CASE语句在Oracle中重新给指定字段赋值的用法

CASE语句在Oracle中重新给指定字段赋值的用法是本文我们主要要介绍的内容,首先我们需要创建数据库和添加数据,然后我们以个实例来介绍这一用法,接下来我们就开始介绍这一部分内容。一、创建数据1 create table t(2 id integer,3 name varchar2(50)4 )二、添加数据5 insert into t values(1,'zhao')6 insert int...

weixin_35775608的博客 1784

oracle 给变量赋值方法总结

CREATE OR REPLACE Procedure grantValue Is v_tabName Varchar2(50); v_recordNum Number; v_var Varchar2(50) := '直接赋值法'; -- 方法1 直接赋值 v_minvar Varchar2(50); v_sql

u010452908的专栏 4万+

ORACLE中将一个值赋值到另一个的值

转自: http://www.cnblogs.com/mybi/archive/2012/06/04/2535274.html   update tmp_customer_list t set email = (select email from tmp_etl_customerlist e where t.mobile = e.mobile); 更加高效的方法:(将CUS

honghuajun的专栏 3048

【SQL那些事】oracle 之间字段赋值错误解析

在做项目时,经常需要在量之间进行字段赋值进行初始化 例如: update TB_PER_INTERNALDISMISSION ti set ti.C_UNITID = nvl((select ts.C_OLDUNITID from TB_PER_STAFFRECORD ts where ts.c_

killer1989的博客 931

oracle 将一个中的值赋给另一张有关联单号

update purchaseupdate  t set t.gysname=(select distinct tf.gysname from jieusandetail  tf where tf.cgno =t.cgno)

qq_34952021的博客 2026

Oracle sql给一列赋值,[原创]oracle和SQLSERVER的多字段赋值

create table tablea(id int,ip varchar(15),apps varchar(10))insert into tablea select 23,'127.0.0.1','aaa'godeclare @Variable1 varchar(15),@Variable2 varchar(10)select @Variable1 = ip ,@Variable2 = app...

weixin_42388176的博客 1430

oracle查询报错信息,oracle 查询报错

try{sql = sql.Replace("P_start", (index * number+1).ToString()).Replace("Pend", ((index+1) * number).ToString());OpenConn();LogHelper.Write(string.Format("ExcuteSelectSql== {0} ", sql));System.Data.D...

weixin_35215225的博客 737

oracle中使用sql查询时字段为空则赋值默认

oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl   函数声明:nvl(col,val)   说明:当col为空时取val作为返回值,当col不为空时取col值。   用处:最主要的是格式化数据,比如计算金额时,不想出现空数据,可以使用nvl(JINE,0)来得到0。由于null+(或-,*,/)数字等于null,所以

梦痕 5万+

oracle赋值问题(将同一中某一字段赋值给另外一个字段的语句)

将同一中某一字段赋值给另外一个字段的语句update jxc_ckmx ckmx1 set ckmx1.ddsl = (select ckmx2.sl from jxc_ckmx ckmx2 where ckmx2.id = ckmx1.id); 转载于:https://www.cnblogs.com/jiangsheng3/p/5885795.html...

weixin_33860737的博客 8541
上一篇: oracle安装5.1,5.1 Oracle RAC的安装(5)
下一篇: php策略模式作用,PHP设计模式之策略模式详解
咸鱼cc
博客等级 码龄6年 2556粉丝 4279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值