ibatis/Oracle - INSERT 中的 SELECT 查询失败
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2473373/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
ibatis/Oracle - SELECT query inside INSERT is failing
提问by jobinbasani
I'm trying to do an Insert operation using iBatis.
我正在尝试使用 iBatis 进行插入操作。
INSERT INTO SCHEMA.TABLE
(FIELD1,
FIELD2,
FIELD3)
VALUES
(#field1#,
(SELECT
ANOTHER_FIELD
FROM
SCHEMA.TABLE
WHERE
FIELD4= #field2#),
#field2#)
The inner select query always fails and returns NULL. But if I substitute #field2# with the actual value only in the inner query, it works fine. Why is iBatis not substituting fieldvalues in the innerqueries?
内部选择查询总是失败并返回 NULL。但是如果我只在内部查询中用实际值替换 #field2# ,它就可以正常工作。为什么 iBatis 不替换内部查询中的字段值?
Any ideas?
有任何想法吗?
回答by Peter Lang
The following way using a single sub-query and omitting the VALUES
keyword would work with Oracle, please try with iBatis:
以下使用单个子查询并省略VALUES
关键字的方法适用于 Oracle,请尝试使用 iBatis:
INSERT INTO SCHEMA.TABLE
(FIELD1,
FIELD2,
FIELD3)
(
SELECT
#field1#,
ANOTHER_FIELD,
#field2#
FROM
SCHEMA.TABLE
WHERE
FIELD4= #field2#
)
回答by Allan
That syntax is invalid for Oracle. Try the following:
该语法对 Oracle 无效。请尝试以下操作:
INSERT INTO SCHEMA.TABLE
(FIELD1,
FIELD2,
FIELD3)
SELECT
#field1#,
ANOTHER_FIELD,
#field2#
FROM
SCHEMA.TABLE
WHERE
FIELD4= #field2#