[英]Comparing two columns in an IF statement in a stored procedure in Oracle
我在SQL Developer中有兩個不同的表TB_Temp
和TB_Main
。 我只想比較這些表中的兩列,例如。 我想比較user_id
列tb_temp
和user_payment
列tb_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.