簡體   English   中英

如何在plsql中比較具有相同列的兩個表?

[英]How to compare two tables with same columns in plsql?

我有兩個表: aanvr_omzetten (請求)和klant (客戶)

表的結構:

AANVR_OMZETTEN

VOORNAAM ACHTERNAAM GESLACHT GEBOORTEDATUM EMAIL
A        John       M        07-01-1990    v1@gmail.com
B        Jaxk       V        01-04-1965    v2@gmail.com


KLANT

NAAM ACHTERNAAM GESLACHT GEBOORTEDATUM EMAIL        NATION BANKNR STUDY
A    John       M        07-01-1990    v1@gmail.com DUTCH  12     YES
B    Jack       M        01-04-1965    v2@gmail.com DUTCH  15     YES

這是我的代碼:

DECLARE
v_klantnummer number;
v_rekeningnummer number;

BEGIN
    -- get klantnummer and rekeningid
    BEGIN
        select klantnummer, rekeningid into v_klantnummer, v_rekeningid from rekening where rekeningnummer = :P501_REKENINGNR and rekeningtype = 23;
    EXCEPTION
        when no_data_found then
            raise_application_error(-20000, 'Rekeningnummer is onbekend');
    END;

    -- get the information of klant X with klantnummer v_klantnummer

    for i in (select voornaam, achternaam, geslacht, geboortedatum, email, postcode, huisnummer, straat, plaats, nationaliteit, burgerservicenummer
             from klant where klantnummer = v_klantnummer)
             loop

             -- compare with other table?? 
             -- 

     for i in (select voornaam, achternaam, geslacht, geboortedatum, email, postcode, huisnummer, straat, plaats, nationaliteit, burgerservicenummer
             from aanvr_omzetten where aanvr_omzetten = :P501_aanvr_omzettennr)

             -- both tables loaded but how can i compare them?

             -- ONLY if the selected attributes match 

             INSERT etc.

我不需要比較所有列,只需比較aanvr_omzetten klant中的那些列,因為表klant具有所有這些列和其他內容。

KLANT v_klantnummer主鍵: v_klantnummer
AANVR_OMZETTEN主鍵:: P501_AANVR_OMZETTENNR

我只想在這些列匹配的情況下進行插入,否則會引發錯誤。

知道我該怎么做嗎?

因此,您想插入兩個命名表中都存在的某些(第三個)表值嗎? 您可以使用INTERSECT運算符通過SQL INSERT語句來執行此操作,以標識匹配的行。

insert into whatever
select VOORNAAM, ACHTERNAAM, GESLACHT, GEBOORTEDATUM, EMAIL 
from AANVR_OMZETTEN
intersect 
select NAAM, ACHTERNAAM, GESLACHT, GEBOORTEDATUM, EMAIL   
from KLANT
;     

這可能不是一個完整的解決方案(例如,它忽略了主鍵的問題)。 但是您的問題並未提供有關如何處理此類問題的任何線索。 如果您需要進一步的幫助,請澄清您的問題。

  • -創建僅用於顯示普通列的類型

    -彈出表格類型的表格數組

    -以一個循環進行迭代,例如KLANT
    -foreach行檢查它是否存在於AANVR_OMZETTEN表數組中。
    - 如果不; 插入; 如果是,請繼續。

https://www.tutorialspoint.com/plsql/plsql_arrays.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM