标签: ora-01461

PreparedStatement +选择更新+主键列中的Oracle 12c + ORA-01461

尝试执行select for update语句然后执行插入或更新时,我遇到了一个奇怪的问题.我得到一个ORA-01461例外.只有在使用最新的ojdbc驱动程序(12.1.0.2)时才会发生这种情况,而在较旧的驱动程序中它可以正常工作(12.1.0.1).

更具体地说,最新的驱动程序似乎在主键字符长度(限制为32个字符)中有某种限制,尽管相应的列声明超过32个字符.复制问题的示例代码如下:

CREATE TABLE "TEST_TABLE" (
 "TEST_ID" VARCHAR2(40 CHAR) NOT NULL ENABLE,
 "TEST_COMMENT" VARCHAR2(200 CHAR),
 CONSTRAINT "TEST_TABLE_PK" PRIMARY KEY ("TEST_ID")
);
Run Code Online (Sandbox Code Playgroud)

还有一些java:

public class DemoUpdatableResultSet {

    private static final String DB_URL = "jdbc:oracle:thin:@xxxx:1521/xxxxx";
    private static final String DB_USER = "xxx";
    private static final String DB_PASS = "xxx";

  public static Connection getConnection() throws Exception {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
    return conn;
  }

  public static void main(String[] args) {
    final String …
Run Code Online (Sandbox Code Playgroud)

java oracle jdbc prepared-statement ora-01461

13
推荐指数
1
解决办法
1359
查看次数

从perl插入多字节字符到oracle时命中ORA-01461

我有一个perl脚本,它将文本文件中的记录插入到我们的数据库中.每当记录具有像"RODR_Í_GUEZ"这样的多字节字符时.我收到错误ORA-01461,但是我没有接近4000字符从varchar2切换到long

设置:

$ENV{NLS_CHARACTERSET} = 'AL32UTF8';  
Run Code Online (Sandbox Code Playgroud)

在连接之前似乎没有帮助.

使用java客户端(SQuirreL SQL)并手动编写INSERT INTO语句插入记录就好了,所以我确定不是数据库的配置方式.

有什么想法吗?

oracle perl multibyte ora-01461

4
推荐指数
1
解决办法
1106
查看次数

将超过4000个字符的XML插入Oracle XMLTYPE列

我有一个Oracle表,其中的列类型为“ SYS.XMLTYPE”,并且存储过程正在执行插入操作:

(简洁版本):

PROCEDURE InsertXML 
(
     pXMLData IN LONG 
)
IS
BEGIN

    INSERT INTO MY_TABLE (XML_DATA) VALUES(pXMLData);

END InsertXML;
Run Code Online (Sandbox Code Playgroud)

我从C#代码中以“ OracleType.LongVarChar” 类型调用此sp 。

现在的问题是:如果xml的字符数少于4000个,则一切工作正常,但是如果使用的XML字符数超过4000个,则会出现以下错误:

ORA-20000: ORA-01461: can bind a LONG value only for insert into a LONG column
Run Code Online (Sandbox Code Playgroud)

我该如何处理?Thx 4个答案

xml oracle insert ora-01461 ora-20000

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

ora-01461 ×3

oracle ×3

insert ×1

java ×1

jdbc ×1

multibyte ×1

ora-20000 ×1

perl ×1

prepared-statement ×1

xml ×1