[英]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.