精华内容
下载资源
问答
  • oracle存储过程clob类型参数null问题
    2021-02-05 11:55:59

    createorreplaceprocedureadd_app_msg_push(v_titleinvarchar2,v_msginCLOB,v_timeintimestamp,v_urlinvarchar2)isv_idnumber(30);old_msgclob;v_countnumber(30);v_msg_partvarchar2...

    create or replace procedure add_app_msg_push(v_title in varchar2,v_msg in CLOB,v_time in timestamp,v_url in varchar2) isv_id number(30);old_msg clob;v_count number(30);v_msg_part varchar2(1000);v_length number(30);begin if v_msg is null then dbms_output.put_line('null'); return; else insert into APP_MSG_PUSH_HISTORY (ID, TITLE, MSG, TIME, URL) values (v_id, v_title, empty_clob(), v_time,v_url); dbms_output.put_line('not null'); end if; v_count := 1; v_length := dbms_lob.getlength(v_msg); select msg into old_msg from APP_MSG_PUSH_HISTORY where id = 91; dbms_output.put_line(dbms_lob.getlength(old_msg)); dbms_output.put_line('--'); dbms_output.put_line(dbms_lob.getlength(v_msg)); dbms_output.put_line('--');end add_app_msg_push;

    上面是我写的存储过程,入参有个v_msg是clob类型的,然后我进行了下面测试

    我怎样才能传进去clob类型的值,求大神救命

    展开

    更多相关内容
  • java在oracle数据库中如何插入读取CLOB值2009年04月17日 星期五 15:19在oracle数据库中如何插入CLOB值 oracle中最常用的varcher2类型最多只能存储4000个字节的内容,一般情况下是能够满足用户的需求的。但是在一些...

    java在oracle数据库中如何插入读取CLOB值2009年04月17日 星期五 15:19在oracle数据库中如何插入CLOB值 oracle中最常用的varcher2类型最多只能存储4000个字节的内容,一般情况下是能够满足用户的需求的。但是在一些特殊情况下(如要存储图片或者要存储的内容超过了4000个字节),varcher2就满足不了这个需求了。这个时候我们可以借助于oracle里面的大字段CLOB后者 BLOB。举例如下: 首先,在数据库中建一张表news,为了简单起见,只有一个字段content(CLOB)。做好准备工作后就可以开始我们的CLOB之旅了。 以下是插入CLOB的代码: import java.sql.*; import java.io.*; public class TestClob{ public void TestClob(){} public static void main(String args[]){

    try{

    Class.forName("oracle.jdbc.driver.OracleDriver");

    Connectionconn=DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ora32","tjpt","tjpt");

    conn.setAutoCommit(false);

    //第一步:插入一个空的

    CLOB String sql1="insert into news(content,id) values (EMPTY_CLOB(),'1')";

    PreparedStatement ps1=conn.prepareStatement(sql1);

    ps1.executeUpdate();

    ps1.close();

    //第二步:取出该CLOB

    String sql2="select content from news for update";

    PreparedStatement ps2=conn.prepareStatement(sql2);

    ResultSet rs2=ps2.executeQuery();

    while (rs2.next()){

    oracle.sql.CLOB clob=(oracle.sql.CLOB)rs2.getClob(1);

    BufferedWriter out=new BufferedWriter(clob.getCharacterOutputStream());

    String content="1234";

    //假定这是新闻的内容,当然可以也可以是其他的内容

    out.write(content,0,content.length());

    out.close(); }

    conn.commit();

    } catch(Exception e){e.printStackTrace();} } } 既然插入进去了,那我们还得要检验一下:插进去的是不是你想插进去的内容?以下就是读取CLOB的代码: import java.sql.*; import java.io.*; public class ReadClob{ public void ReadClob(){} public static void main(String args[]){ try{ Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ora32","tjpt","tjpt"); String sql1="select content from news"; PreparedStatement ps1=conn.prepareStatement(sql1); ResultSet rs1=ps1.executeQuery(); while (rs1.next()){ oracle.sql.CLOB clob=(oracle.sql.CLOB)rs1.getClob(1); BufferedReader in=new BufferedReader(clob.getCharacterStream()); StringWriter out=new StringWriter(); int c; while((c=in.read())!=-1){ out.write(c); } String content=out.toString(); System.out.println (content);//输出CLOB内容 } } catch(Exception e){e.printStackTrace();} }}

    分享到:

    18e900b8666ce6f233d25ec02f95ee59.png

    72dd548719f0ace4d5f9bca64e1d7715.png

    2009-05-18 13:39

    浏览 1824

    分类:数据库

    评论

    展开全文
  • 数据库存储的字段的类型为Clob类型,要将String类型存储到Clob类型需要一定的转换,要先将String类型转换成流的方式,然后再将流存储即可,原来也不难String description = "存储String类型到Clob类型!";String...

    最开始不知道存储String类型到Clob类型的时候,感觉特别麻烦,网上翻了很多资料,有参考价值的不多。

    数据库存储的字段的类型为Clob类型,要将String类型存储到Clob类型需要一定的转换,要先将String类型转换成流的方式,然后再将流存储即可,原来也不难

    String description = "存储String类型到Clob类型!";

    StringReader strReader = new StringReader(description);

    使用存储过程进行存储:

    CallableStatement logCS = con.prepareCall("{call

    insert_test_case_import_log(?,?,?,?,?,

    ?,?,?)}");

    try{

    logCS.setString(1,

    projectId);

    logCS.setString(2,

    importLogId);

    logCS.setString(3,

    creator);logCS.setTimestamp(4,

    myStamp);logCS.setTimestamp(5,

    endTime);

    logCS.setString(6,

    fileName);

    logCS.setString(7,

    fileType);logCS.setCharacterStream(8, strReader,

    strDescription.length());

    logCS.execute();

    } catch

    (SQLException e) {

    e.printStackTrace();

    }  finally

    {

    logCS.close();

    }

    java对时间戳的处理:下面举例,不详细说明

    Date finishTime = new

    Date();

    Calendar

    finishCalendar =

    Calendar.getInstance();

    finishCalendar.setTime(finishTime);

    Timestamp endTime=

    new Timestamp(finishCalendar.getTimeInMillis());

    转载:

    博客园

    ​Alan's

    Blog

    展开全文
  • I'm fairly certain it's caused by CLOB fields being mapped to strings in Entity Framework, and then being selected in LINQ statements that pull entire entities instead of just a limited set of ...

    Our project recently updated to the newer Oracle.ManagedDataAccess DLL's (v 4.121.2.0) and this error has been cropping up intermittently. We've fixed it a few times without really knowing what we did to fix it.

    I'm fairly certain it's caused by CLOB fields being mapped to strings in Entity Framework, and then being selected in LINQ statements that pull entire entities instead of just a limited set of properties.

    Error:

    Value cannot be null.

    Parameter name: byteArray

    Stack Trace:

    at System.BitConverter.ToString(Byte[] value, Int32 startIndex, Int32 length)

    at OracleInternal.TTC.TTCLob.GetLobIdString(Byte[] lobLocator)

    at OracleInternal.ServiceObjects.OracleDataReaderImpl.CollectTempLOBsToBeFreed(Int32 rowNumber)

    at Oracle.ManagedDataAccess.Client.OracleDataReader.ProcessAnyTempLOBs(Int32 rowNumber)

    at Oracle.ManagedDataAccess.Client.OracleDataReader.Read()

    at System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.StoreRead()

    Suspect Entity Properties:

    'Mapped to Oracle CLOB Column'

    Public Property LargeField As String

    But I'm confident this is the proper way to map the fields per Oracle's matrix:

    There is nothing obviously wrong with the generated SQL statement either:

    SELECT

    ...

    "Extent1"."LARGEFIELD" AS "LARGEFIELD",

    ...

    FROM ... "Extent1"

    WHERE ...

    I have also tried this Fluent code per Ozkan's suggestion, but it does not seem to affect my case.

    modelBuilder.Entity(Of [CLASS])().Property(

    Function(x) x.LargeField

    ).IsOptional()

    Troubleshooting Update:

    After extensive testing, we are quite certain this is actually a bug, not a configuration problem. It appears to be the contents of the CLOB that cause the problem under a very specific set of circumstances. I've cross-posted this on the Oracle Forums, hoping for more information.

    解决方案

    We have this problem as well on some computers, and we are running the latest Oracle.ManagedDataAccess.dll (4.121.2.20150926 ODAC RELEASE 4).

    We found a solution to our problem, and I just wanted to share.

    This was our problem that occurred some computers.

    Using connection As New OracleConnection(yourConnectionString)

    Dim command As New OracleCommand(yourQuery, connection)

    connection.Open()

    Using reader As OracleDataReader = command.ExecuteReader()

    Dim clobField As String = CStr(reader.Item("CLOB_FIELD"))

    End Using

    connection.Close()

    End Using

    And here's the solution that made it work on all computers.

    Using connection As New OracleConnection(yourConnectionString)

    Dim command As New OracleCommand(yourQuery, connection)

    connection.Open()

    Using reader As OracleDataReader = command.ExecuteReader()

    Dim clobField As String = reader.GetOracleClob(0).Value

    End Using

    connection.Close()

    End Using

    展开全文
  • oracle clob 存储空间

    2021-01-17 07:35:01
    ORACLE clob字段整理一、CLOB字段的业务说明:CLOB为字符LOB,是LOB 的一种。这种类型用于存储大量的文本信息,如XML 或者只是纯文本。这个数据类型需要进行字符集转换,也就是说,在获取时,这个字段中的字符会从...
  • 遇到往ORACLE数据库中插入数据时总是报ORA-01084 invalid argument in OCI call错误,经分析是因为表中的一个字段类型为CLOB,并且可为空,当在给该字段插入空值时引发的该错误。后来判断是否为空值,如果为空值使用...
  • 我们的项目最近更新到较新的Oracle....我很确定它是由CLOB字段映射到Entity Framework中的字符串引起的,然后在LINQ语句中被选中,这些语句拉动整个实体而不仅仅是一组有限的属性.错误:Value cannot be null.Par...
  • 今天工作遇到bug,让我头大 bug描述如下 ...1.插入前必须先插入一个lob对象 clob为EMPTY_CLOB(),blobEMPTY_BLOB(). 2.select之前插入的数据进行锁定。 select ** from *** where *** for upd...
  • varchar2字段最多存储4000个字节,如果需要存储更长的字节,...现在通过C#将长字节进去。 1、首先保存引用了用于连接Oracle数据库的DLL 2、数据库连接 private string GoOracle_Do(string SQLstring) {...
  • 在Oracle Database中,VARCHAR2 字段类型,最大值为4000;PL/SQL中 VARCHAR2 变量类型,最大字节长度为32767。 当 VARCHAR2 容纳不下我们需要存储的信息时,就出来的Oracle的大数据类型LOB( Large Object,大型对象)...
  • 当前位置:我的异常网» 编程»Java 储存和读取 oracle CLOB 类型字段的实用方法Java 储存和读取 oracle CLOB 类型字段的实用方法www.myexceptions.net网友分享于:2013-10-28浏览:19次Java 存储和读取 oracle CLOB ...
  • 这是我几年前写的文章了...这个例子,和取都很明白了import java.sql.*;import java.io.*;import oracle.jdbc.driver.OracleResultSet;import oracle.sql.CLOB;public class TestOracleClob implements Serializa...
  • 今天在做文档管理相关系统时,需要将网页上的文本输入框(textarea或input)中的内容,上传到ORACLE数据库的CLOB字段中去。在网上找了好长时间,总算有所收获,现将方法总结如下,其中部分代码其它网友的源码:一、...
  • 数据库读取clob字段

    2014-08-25 17:03:34
    关于在oracle数据库中读取clob大字段问题
  • //注意,这里的参数是个空格,先新增一个Clob进去 session.save(statementsBean); session.flush();//强制执行 session.refresh(statementsBean,LockMode.UPGRADE); SerializableClob sc=(SerializableClob)...
  • 介绍了利用Hibernate将一个长字符串转换流存储至Clob字段中,然后再从Clob字段中读出来,转换字符串输出的方式
  • //注意,这里的参数是个空格,先新增一个Clob进去 session.save(statementsBean); session.flush();//强制执行 session.refresh(statementsBean,LockMode.UPGRADE); SerializableClob sc=(SerializableClob)...
  • 一、Oracle中的varchar2类型我们在Oracle数据库存储的字符数据一般是用VARCHAR2。...在Oracle Database中,VARCHAR2 字段类型,最大值为4000;PL/SQL中 VARCHAR2 变量类型,最大字节长度为32767。当 ...
  • 数据库clob的操作

    千次阅读 2021-02-08 11:00:31
    下面介绍数据库中clob(characher large object)(对应于sql server中中的text字段)字段的操作问题:在插入的时候可以通过函数Hibernate.createClob()将字符串或者流编程clob类型(java.sql.Clob)或者通过以下的这个...
  • 首先看看如下一段代码,大家来猜测一下两次 put_line 的输出:declarev_clob clob :='1234567890';v_r1 varchar2(100);v_r2 varchar2(100);begin v_r1 := null || v_clob || 'ABC';v_r2 := null || v_clob || 'ABC';...
  • 在Code First中使用Migrations对实体类和数据库... 工具--库程序包管理器--程序包管理器控制台 运行命令:Enable-Migration ...java中循环遍历实体类的属性和数据类型以及属性package com.walkerjava.test; import...
  • 参考百度内容,写一个function(函数),参数有xml格式字符串(dataxml)和指定节点(nodeName),返回指定节点的(nodeValue)。编码实现:--get_xml_nodeValue实现 startCREATE OR REPLACE FUNCT...
  • import java.io.IOException;import java.io.Reader;import java.sql.Clob;...public class clob2String{/*** 数据库Clob对象转换String*/private static String clobToString(Clob clob){try{/...
  • 1、在Plsql里找到要看的表点编辑数据选中要找到的列右击在编辑器中打开如图所示。 2、点击进去看到就是里面的真实,如图所示。
  •   今天设计了一张表存储请求和响应报文的表,针对这两个内容有两个字段,指定的类型为CLOB数据类型。然后插入数据库时,报错:Oracle中Clob类型处理解析:ORA-01461:仅可以插入LONG列的LONG赋值; 原因分析   之...
  • clob数据存储

    2020-12-24 19:43:33
    /** * @roseuid 3EDA089E02BC */ public LobPros() { } /** * 往数据库中插入一个新的CLOB对象 * * @param infile - 数据文件 * @throws java.lang.Exception * @roseuid 3EDA04A902BC */ public ...
  • // 插入 //OracleCommand cmd = "insertInto ... OracleParameter op = new OracleParameter(var, OracleType.Clob); op.Value = value; cmd.Parameters.Add(op); conn.Open(); cmd.ExecuteNonQuery(); conn.Close();
  • varchar2改为clob的解决步骤

    千次阅读 2020-07-08 16:24:13
    由于在后台项目建表是考虑不周全,导致列的类型选择错误,现需要修改列的类型。 一.varchar2改为clob
  • myBatis的一对多查询,主要利用resultMap实现一次查询多个结果集日常开发中有这中场景,一个用户有多个角色,一个角色又有多个菜单,想查出一个用户的所有菜单.除了常见的关联查询之外,更...什么没接到上篇呢?原因...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,478
精华内容 2,191
关键字:

存clob为空的值