使用 APEX 集合中的值更新 oracle table 中的多个值
Update multiple values in an oracle table using values from an APEX collection
我正在使用 APEX 集合来存储一些值并在 Oracle Application Express 4.2.3 中的页面之间传递它们。
然后我想使用集合中的值对名为 "project" 的 table 执行更新语句。
到目前为止我的代码如下:
update project
SET name=c.c002,
description=c.c007,
start_date=c.c004,
timeframe=c.c005,
status=c.c009
FROM
apex_collections c
WHERE
c.collection_name = 'PROJECT_DETAILS_COLLECTION'
and id = :p14_id;
其中:p14_id 是页面项目的值。
但是,我收到以下错误:
ORA-00933: SQL command not properly ended
有人知道如何解决这个问题吗?
谢谢!
您使用的 UPDATE
语法在 Oracle 中无效;它不允许您以您尝试的方式使用 FROM
。
在 Oracle 中执行此操作的最简单方法是使用子查询:
update project
set (name, description, start_date, timeframe, status) =
(select c.c002, c.c007, c.c004, c.c005, c.c009
FROM
apex_collections c
WHERE
c.collection_name = 'PROJECT_DETAILS_COLLECTION'
)
WHERE
id = :p14_id
;
注意,如果子查询returns没有行,目标table中的列将被更新为NULL
;这可以通过在更新谓词中添加类似的 EXISTS
条件来避免。也可以通过使用 MERGE
语句而不是 UPDATE
.
来避免这种情况
如果子查询returns多行,语句会抛出错误。看来这里不应该是这样。
我正在使用 APEX 集合来存储一些值并在 Oracle Application Express 4.2.3 中的页面之间传递它们。
然后我想使用集合中的值对名为 "project" 的 table 执行更新语句。
到目前为止我的代码如下:
update project
SET name=c.c002,
description=c.c007,
start_date=c.c004,
timeframe=c.c005,
status=c.c009
FROM
apex_collections c
WHERE
c.collection_name = 'PROJECT_DETAILS_COLLECTION'
and id = :p14_id;
其中:p14_id 是页面项目的值。
但是,我收到以下错误:
ORA-00933: SQL command not properly ended
有人知道如何解决这个问题吗?
谢谢!
您使用的 UPDATE
语法在 Oracle 中无效;它不允许您以您尝试的方式使用 FROM
。
在 Oracle 中执行此操作的最简单方法是使用子查询:
update project
set (name, description, start_date, timeframe, status) =
(select c.c002, c.c007, c.c004, c.c005, c.c009
FROM
apex_collections c
WHERE
c.collection_name = 'PROJECT_DETAILS_COLLECTION'
)
WHERE
id = :p14_id
;
注意,如果子查询returns没有行,目标table中的列将被更新为NULL
;这可以通过在更新谓词中添加类似的 EXISTS
条件来避免。也可以通过使用 MERGE
语句而不是 UPDATE
.
如果子查询returns多行,语句会抛出错误。看来这里不应该是这样。