我試圖用函數的多個返回來更新表。使用返回多個值的函數更新多列
我已經創建了一個TYPE
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
...
我需要更新包含城市,州,緯度和經度列的表格。對於經緯度,我應該調用函數並使用結果來更新城市/州的值。我只希望一次調用的函數爲每一行和只有某些行,我需要更新(比方說城市是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)
);
,但我得到無效的識別錯誤。我覺得我太過於複雜,對此會採取什麼正確的方法?
這個工程,但我最終打電話給nearestcity兩次 - 這是一個非常沉重的功能 – iomartin
@iomartin我已經更新了答案 –
太棒了,它的工作原理。謝謝! – iomartin