3

请帮忙。

我试过这个,我不知道如何继续。我需要为此提供一个 select into 语句。

TYPE ADDR_DATA IS TABLE OF ADDRESS%ROWTYPE
INDEX BY BINARY_INTEGER;

选择是,(只会出现一条记录),我该如何进一步使用它?

SELECT 
    * INTO ADDR_DATA
FROM 
    ADDRESS 
WHERE           
    ADDR_DATA.PERSON_ID = 83;
4

1 回答 1

6

看起来您正在尝试批量收集数据,这意味着您需要这样做;

DECLARE
    v_address_data ADDR_DATA;
BEGIN
SELECT 
    * BULK COLLECT INTO v_address_data
FROM 
    ADDRESS 
WHERE           
    ADDR_DATA.PERSON_ID = 83;
END;

另一方面,你正在寻找(我认为)只有一行 - id=83
这意味着你想要类似的东西:

DECLARE
    v_addrss ADDRESS%ROWTYPE;
BEGIN
    SELECT 
        * INTO v_addrss 
    FROM 
        ADDRESS 
    WHERE           
        ADDR_DATA.PERSON_ID = 83;
END;
于 2012-04-10T14:17:06.427 回答