我正在尝试使用函数的多个返回来更新表。
我创建了一个类型
CREATE OR REPLACE TYPE city_state AS OBJECT
(
city VARCHAR2(30),
state VARCHAR2(2)
);
/
我有一个返回这种类型变量的函数。
CREATE OR REPLACE FUNCTION closestcity(lat IN NUMBER, lon IN NUMBER) RETURN city_state IS
...
我需要更新一个包含城市、州、纬度和经度列的表。使用纬度/经度,我应该调用函数并使用结果来更新城市/州的值。我只想为每一行调用一次函数,并且只有一些行需要更新(假设 city 为 NULL)
这是我到目前为止得到的
UPDATE (SELECT * FROM t t1 WHERE city IS NULL)
SET (city, state) = (
SELECT newcity.city, newcity.state FROM
( SELECT closestcity(latitude, longitude) newcity
FROM t t2
WHERE t1.latitude = t2.latitude AND
t1.longitude = t2.longitude)
);
但我得到一个无效的标识符错误。我觉得我过于复杂了,正确的方法是什么?