[英]Is it possible to update a nested Oracle table in PL/SQL using SQL?
我認為這是可能的,但我找不到任何如何使用SQL更新PL / SQL塊中的嵌套表的示例。 我正在加載一個包含行的嵌套表,現在我想更新多行中的值,而不必遍歷表,檢查值,然后設置它們。 我更喜歡發出一個SQL語句。
我知道這是一個愚蠢的例子,但我只想提供一個簡單的例子......
CREATE TYPE my_rec AS OBJECT (col1 NUMBER, col2 NUMBER, col3 NUMBER);
CREATE TYPE my_tab AS TABLE OF my_rec;
DECLARE
plstab my_tab := my_tab(NULL,NULL,NULL);
BEGIN
SELECT my_rec(x,y,z)
BULK COLLECT INTO plstab
FROM data_table;
-- Now I want to update plstab using SQL and set
-- y = x*10 and z = x+y where x > 10
-- This won't work...how would I do something like this?
UPDATE plstab
SET y = x*10,
z = x+y
WHERE x>10;
END;
最簡單的解決方法是首先操作SQL,然后執行BULK COLLECT。 我在下面舉例說明了一個例子。 請原諒任何語法錯誤,因為我現在沒有工作區。
DECLARE
plstab my_tab := my_tab();
BEGIN
SELECFCT my_rec(x,y,z)
BULK COLLECT INTO plstab
FROM
(SELECT x, CASE WHEN X> 10 THEN (X*10)
ELSE Y END Y,
CASE WHEN X> 10 THEN (X+ (CASE WHEN X> 10 THEN (X*10)
ELSE Y END)) Z
FROM data_table);
END;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.