簡體   English   中英

比較Oracle存儲過程中IF語句中的兩列

[英]Comparing two columns in an IF statement in a stored procedure in Oracle

我在SQL Developer中有兩個不同的表TB_TempTB_Main 我只想比較這些表中的兩列,例如。 我想比較user_idtb_tempuser_paymenttb_main

這兩個表都是從Excel文件導入的。 如果存在匹配項,例如,我希望它使用dbms_output日志記錄僅輸出調試。

到目前為止,我有; 它的比較部分讓我難以接受IF語句! 這兩個表包含將不斷用新信息上載的值,因此我要了解的是我實際上無法聲明存儲在表中的值,因為如果有意義的話,它們將一直在變化? 我只需要知道列是否匹配,就需要輸出!

create PROCEDURE PR_TEST AS

user_payment number;

CURSOR c is
SELECT user_payment 
FROM tb_main;

CURSOR tmp is

SELECT * 
FROM tb_temp
WHERE user_ref is null or user_ref = user_payment

cTemp%ROWTYPE

BEGIN

--loop through cursor---

 cTemp_COUNT:=0;

 FOR I IN cTemp LOOP

 end loop

基於SET的解決方案應該為您工作。

SELECT t.* 
FROM tb_temp t INNER JOIN tb_main m on 
WHERE t.user_ref = m.user_payment
UNION
SELECT * FROM tb_temp WHERE user_ref IS NULL

您知道輸出的聯接和ref_Cursors嗎? 另請注意:在播放導入的數據時,您可能會有非顯示字符,例如空格。 因此,如果user_Payment為'123'並且用戶ID為'123',將找不到匹配項。

顯示兩個表中user_payment與user_ID匹配的所有詳細信息

SELECT * 
FROM tb_Main M
INNER JOIN tb_temp T
 on M.user_payment = T.User_ID

顯示兩個表中的所有記錄,並且當存在匹配項時,如果發生多個匹配項,則顯示彼此對齊(在同一行上)的記錄,將產生多行。

SELECT * 
FROM tb_Main M
FULL OUTER JOIN tb_temp T
 on M.user_payment = T.User_ID

顯示來自tb_main的所有記錄,僅顯示與tb_temp匹配的詳細信息

SELECT * 
FROM tb_Main M
LEFT JOIN tb_temp T
 on M.user_payment = T.User_ID

顯示來自tb_temp的所有記錄,僅顯示與tb_main匹配的詳細信息

SELECT * 
FROM tb_Main M
RIGHT JOIN tb_temp T
 on M.user_payment = T.User_ID

暫無
暫無

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

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