oracle merge into函数中插入clob字段】的更多相关文章

当使用Merge into 函数向ORACLE数据库中插入或更新数据时,报错“ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值”,使用如下方法可以把String转换为clob. 需要引入 JDBC drivers (ojdbc14.jar or ojdbc5.jar) CLOB tempClob = CLOB.createTemporary(conn, true, CLOB.DURATION_SESSION);//Open the temporary CLOB in read…
SQL语句 在一个表中插入新字段: alter table 表名 add 字段名 字段类型 例: alter table OpenCourses add Audio varchar(50)alter table ListenCourses add Audio varchar(50)…
oracle 将当前系统时间戳插入timestamp字段 --insert records 精确到秒:insert into userlogin_his(usrname,logintime) values('test',to_timestamp(to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS')); 精确到毫秒:insert into userlogin_his(usrname,logintime) values('…
最近在做系统开发的时候需要想Oracle数据库插入超过4000字节的CLOB字段,在网上查询了N久才发现下面的解决方案,故留存以备后查. 我们可以通过创建单独的OracleCommand来进行指定的插入,即可获得成功,这里仅介绍插入clob类型的数据,blob与此类似,这里就不介绍了,下面介绍两种办法 在通过拼组sql语句来实现数据插入的应用中,我们很有可能会遇到需要插入大型数据的情况,例如,在oracle中需要插入字节数超过4000的字段内容时,我们如果通过简单的拼组sql语句来实现插入,显然…
oracle中的clob类型字段不能直接显示出来,需要借助Oracle系统dbms_lob中substr方法处理,如select dbms_lob.substr(clobField) from table 如果内容输出不全,进行如下设置 set heading off 不输出结果第一行的标题 (字段名称) set long 40000  设置输出的字节数(比较大数)…
ORA-01461: can bind a LONG value only for insert into a LONG column 插入oracle某表时报的错. 查来查去,是插入的某个字段值超长.怎么会超长呢?一个CLOB类型的字段,号称有4G容量的. 表设计: 我用的是Fluently NHibernate,for .net.实体类及映射如下: public class CatchResultContent { public virtual int CatchResultContentI…
昨天在做存储服务的压力测试,后台是采用多线程根据玩家唯一标识做线程划分的,在测试的过程中发现,进行存储的时候,会发生玩家数据错乱的情况. 一开始怀疑是上层逻辑在处理数据的时候发生了错乱,导致保存的时候玩家数据是乱的了. 后来经过详细的日志跟踪,发现其实在存储之前上层发送过来的数据是完全正确的,在存储过后,再读取出来,数据就是乱的了.在这里要说下log4cplus还是非常优秀的日志库,能够在日志中记录线程ID,对于多线程的调试能起到一定的帮助作用 仔细看了一下代码,发现原来是处理数据存储的对象函数…
最近写的功能中有这样一个小功能,根据数据库查询此库中是否有某表,如果有,查询某表下面的某个字段的详细信息 其中一种是... select ATC.OWNER, atC.TABLE_NAME, ATC.COLUMN_NAME, ATC.DATA_TYPE, ATC.DATA_LENGTH, ATC.NULLABLE, ucc.comments from (select ATC.OWNER, atC.TABLE_NAME, ATC.COLUMN_NAME, ATC.DATA_TYPE, ATC.DA…
随机排序函数dbms_random.value()用法:select * from tablename order by dbms_random.value() 行数字段rownum用法:select * from tablename where rownum<=10…
之前工作中遇到生产环境不允许导入Oracle的dmp文件,只能导入sql脚本,但是表中存在clob字段,直接用plsql工具无法导出clob字段,用了下dbvisualizer可以直接导出,亲测可用. dbvisualizer是一款十分好用的数据库工具,支持数据库AmazonRedShift.DB2LUW.Exasol.H2.Informix.JavaDB/Derby.Microsoft SQL Server.MIMERSQL.MySQL.Netezza.NuoDB.Oracle.Postgre…
declare @tablename varchar(200)declare @sql varchar(2000)declare cur_t cursor forselect name from sysobjects where xtype= 'U ' and status> =0 and name not in (select name from sysobjects where id in (select id from syscolumns where id in (select id f…
本博客介绍一下Oracle merge合并函数,业务场景:新增数据的时候要先查询数据库是否已经有改数据,有数据就更新数据,没数据才新增数据,这是很常见的业务场景,如果是用Oracle数据库的话,其实直接用merge函数效率更快,而且merge函数性能也相对比较好 merge函数的语法: MERGE INTO table_name alias1 USING (table|view|sub_query) alias2 ON (join condition) WHEN MATCHED THEN UPD…
直接很长的字符串插入到clob字段中会报字符过长的异常,相信大家都会碰到这种情况 String sql = "insert into table(request_id,table_name,total_number,search_result,create_time,flag) values (?,?,?,?,to_date(?,'yyyy-MM-dd HH24:mi:ss'),?)";            Connection dbcon = DB.getInstance().ge…
解决比较Oracle中CLOB字段问题   Oracle中CLOB和BLOB字段虽说在开发中满足了存放超大内容的要求,但是在一些简单使用中确频频带来麻烦.CLOB中存放的是指针,并不能直接取到实际值.而SQLServer中的text字段就很方便,可以直接拿来与需要的字符串比对,象什么等于呀小于呀Like呀不在话下.可是换成Oracle就麻烦死了,要开辟一个缓存,把内容一段段读取出来后转换,难道写个where条件都这么复杂?经过多方寻求资料,终于发现一个方便简单的方法:利用dbms_lob 包中的…
注:本文来源于:<Oracle中如何查询CLOB字段类型的内容> 语法 select * from table_name where dbms_lob.instr(字段名(clod类型),'查询条件',1,1) > 0; 具体实例 /*查询质押单据信息*/ SELECT * FROM EDI.MID_LOG_OPEN_PLATFORM WHERE SENDER='J***D' AND CREATE_TIME >SYSDATE-1 AND SERVICE_ID='pledgeRequ…
Oracle数据库中, 通过存储过程写入Clob字段 , 当数据大于4k时, 报错 ORA-01460: 转换请求无法实施或不合理 经过排查, 数据Bind方式不对, 不能采用字符串的Bind方式 原方式 //CHECK_SUCCESS(nRet, OCI_BindString(st, MT(":xmlinfo"), data, len), m_Error, clear); 修改后方式 OCI_Lob *lob=NULL; CHECK_SUCCESS_A(lob, OCI_LobCre…
oracle中定义了一个字段是clob的,由于用的是ssh的框架,结果在面向对象存取的时候出现clob类型字段和String类型字段的转换问题.开始查阅了clob字段和String字段的相互转换的方法进行处理结果在运行的时候出现can not reset reader的问题,查了百度,但还是没解决,也许是运行环境不同.后来就使用了另外一种方法: 一:在hibernate.cfg.xml文件中加一个property属性标签 <hibernate-configuration> <sessio…
当通过insert语句直接插入大量字符串(主要是html的内容),超过4000字符时候,就会报: ORA-01489: 字符串连接的结果过长 虽然字段是clob,足以存储,但是通过这种直接插入的时候,因为没有强制指定带插入字符串为clob类型, oracle会把插入的字符串作为 “字符串类型”处理,由于oracle有最大字符串限制(不超过4000个字符),所以会报错. 解决思路:指定待插入字符串类型为clob,可以使用过程或存储过程 例子: DECLARE REALLYBIGTEXTSTRING…
oracle数据库的clob字段导出为sql insert插入语句可以分三种情况:1,clob没有换行符:2,clob有换行符但不以分号结尾:3,clob有换行符并且以分号结尾. clob没有换行符使用dbms_lob.substr(clobName) clobName查询并导出即可,导入的时候oracle会自动将字符串转换为clob类型.示例:select id,dbms_lob.substr(single_line) single_line from demo_table;然后使用Expor…
php/oracle: 解析oracle表中的NCLOB,CLOB字段里面的内容 假如你的字段名是:passenger_info 字段类型是:NCLOB/CLOB,在读表的时候,需要将 passenger_info 字段转换为字符型. $orderinfo = Orders::find()->select('id,create_time,total_price,pay_status,order_status,to_char(ticket_info) as ticket_info,to_char(…
今天,公司项目某个模块的导出报如下错误: HTTP Status 500 – Internal Server Error Type Exception Report Message Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: GC overhead limit exceeded Description The server encountered an unexpected condition…
项目中有很长的字符创需要存储,用到了oracle的clob字段,直接很长的字符串插入到clob字段中会报字符过长的异常,于是便寻求解决方案.看到这个博客写的还不错 首先,创建一个含CLOB字段的表: create table test (id INTEGER, content clob); 然后插入空值 String strSql = “INSERT INTO TEST(id,content) values(‘0001’,?) ”; con.setAutoCommit(false); //con…
(1)在英文版本的ORACLE中默认日期格式为'DD-MON-YY',例如'01-JAN-98' 在汉化的中文版本中ORACLE默认日期格式为'日-月-年',例如'21-8月-2003'或'21-8月-03' (2)转换字符串为日期使用ORACLE内部函数to_date() to_date()函数的参数是to_char()函数参数的反转. to_date(string_value , date_format) 变量定义如下: string_value :为字符串直接值(字符串本身).字符串列(数…
往Oracle数据库中插入日期型数据(to_date的用法) INSERT  INTO  FLOOR  VALUES  ( to_date ( '2007-12-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ) ) ; 查询显示:2007-12-20 18:31:34.0 ------------------- INSERT  INTO  FLOOR  VALUES  ( to_date ( '2007-12-14 14:10' , 'YYYY-MM-DD HH2…
参照: Oracle存储过程中使用游标来批量解析CLOB字段里面的xml字符串 背景:在写存储过程时,需要获取表单提交的信息.表单信息是以xml格式的字符串存储在colb类型的字段dataxml中,如何获取呢?参考百度内容,写一个function(函数),参数有xml格式字符串(dataxml值)和指定节点(nodeName),返回指定节点的值(nodeValue). 编码实现: --get_xml_nodeValue实现 start CREATE OR REPLACE FUNCTION get…
public class Test{public static void main (String args []){ java.util.Date a = new java.util.Date();System.out.println(a);java.sql.Date b = new java.sql.Date(a.getTime());System.out.println(b);java.sql.Time c = new java.sql.Time(a.getTime());System.o…
有时,我们需要在存储过程或函数中根据条件拼凑一些sql字符串语句,然后再执行拼凑后的sql字符串,如何做到呢? 参考以下代码: FUNCTION CALCULATE_TARGET_SCORE (CUR_MONTH IN NVARCHAR2) RETURN NCLOB IS PRAGMA AUTONOMOUS_TRANSACTION; TVALUE_SQL ); --查询目标值的sql(不能把类型声明为NVARCHAR2) RESULT_STR NCLOB; KPI_VALUE NVARCHAR2…
今天折腾了3个小时,为一个以前不知道的oracle函数机制: 在sql查询中,如果一个查询未能获取记录,oracle不会报错 如select aa from bb where 1=2; 但在oracle函数中,如果是赋值语句,就会报错ORA-01403: no data found 数据未找到 如select aa into kk from bb where 1=2; 今天的错误就在这里,主要是弄混了字段null和记录为空的null,而且是在递归调用中,sql的断点调试其实是直接进入了最后一层递…
原文地址:http://czllfy.iteye.com/blog/66737 其他参考资料地址:http://lavasoft.blog.51cto.com/62575/321882/ 要在oracle里面存入图片 用 blob类型 首先在数据库里建立: --连接到管理员 conn sys/tbsoft as sysdba; --为scott用户授权 grant create any directory to scott; --回到scott用户 conn scott/tiger; --创建存…
Oarcle中的LOB类型 1.在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种类型的字段,很灵活,适用于数据量非常大的业务领域(如图象.档案等). 2.LOB类型分为BLOB和CLOB两种:BLOB即二进制大型对象(Binary Large Object),适用于存贮非文本的字节流数据(如程序.图象.影音等). 3.而CLOB,即字符型大型对象(Character Larg…