首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Insert...Select - into ORA-01461:只能将长值绑定到一个长列中

Insert...Select - into ORA-01461:只能将长值绑定到一个长列中
EN

Stack Overflow用户
提问于 2012-05-08 13:45:16
回答 1查看 1.9K关注 0票数 1

当我尝试执行以下语句时:

代码语言:javascript
复制
INSERT INTO myTable (id, some_data, more_data)             
SELECT ?, ?, ? FROM dual 
WHERE NOT EXISTS (
    SELECT 1 FROM myTable WHERE id = ?)

我得到ORA-01461:只能将一个长值绑定到一个长列中。

但是,当我将查询更改为:

代码语言:javascript
复制
INSERT INTO myTable (id, some_data, more_data)             
VALUE (?, ?, ?)

使用相同的值,语句将成功。

注意,我的表包含VARCHAR2和BLOB。但这两条语句的值是相同的。

知道原版为什么失败了吗?

Edit1:评论(罗曼)和一个同事建议我用合并代替INSERT...SELECT...WHERE不存在.很好,我说了-但这也给了我同样的问题(ORA-01461.很久..。长)。

Edit2: to_lob(?)在BLOB列上也不起作用,给我"ORA-00932:不一致的数据类型:预期的长二进制二进制文件“。

EN

回答 1

Stack Overflow用户

发布于 2012-05-09 07:05:35

给我们一个有价值的例子。它适用于简单的值:

代码语言:javascript
复制
CREATE TABLE feed (Id NUMBER,   DATA VARCHAR2(30)  , data1 BLOB);
INSERT INTO feed VALUES (1, '1', '1');
INSERT INTO feed (id, DATA, data1)           
  SELECT 1, '1', '1' FROM dual  WHERE NOT EXISTS ( SELECT 1 FROM feed WHERE id = 1) ;
INSERT INTO feed 
   (SELECT 2, '1', '1' FROM dual  
     WHERE NOT EXISTS (     SELECT 1 FROM feed WHERE id = 3) );
Result:
SELECT * FROM feed
1   1   1   <BLOB>
2   1   1   <BLOB>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10499878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档