0

我目前正在写一个插入语句,它给了我“ORA-00923:未在预期的地方找到来自关键字。有什么办法可以做到这一点吗?谢谢。这是语句:

Insert into seda_owner.seda_lookup(table_name,description,sequence,value)
Select 'DEFAULT_CATE_CHG_ITEMS_DOCS','Software Requirements Specification', '1', 
  (select **value** from seda_owner.seda_document a 
   join seda_owner.seda_lookup b 
    on b.value = a.guid and description = 'Software Requirements Specification');

我尝试做的是将 3 个字符串 table_name、description 和 sequence 以及一个变量值传递给 table seda_lookup。

4

2 回答 2

1

在 Oracle 中,选择语句总是需要from tableName. 您查询的外部选择没有这样的 from 子句。

Insert into seda_owner.seda_lookup(table_name,description,sequence,value)
Select 'DEFAULT_CATE_CHG_ITEMS_DOCS','Software Requirements Specification', '1', 
  (select **value** from seda_owner.seda_document a 
   inner join seda_owner.seda_lookup b 
    on b.value = a.guid and description = 'Software Requirements Specification')
from dual;

更好的是:

Insert into seda_owner.seda_lookup(table_name,description,sequence,value)
Select 'DEFAULT_CATE_CHG_ITEMS_DOCS','Software Requirements Specification', 
    '1', **value** 
from seda_owner.seda_document a 
inner join seda_owner.seda_lookup b 
    on b.value = a.guid and description = 'Software Requirements Specification'

第一个解决方案要求子查询返回一个且只有一个行。

第二种解决方案将插入内连接定义的尽可能多的记录。

于 2012-07-17T20:28:21.613 回答
0
  1. 周围的星号是代码的一部分吗?或者你只是想加粗这个词?
  2. 也许您的嵌套选择返回不止一行
  3. 仅在 b 中吗?您没有在您的select中限定它,但您在连接条件中限定它(b.value)
于 2012-07-17T18:42:31.737 回答