我有下面两张table。
create table main_supplier(file_id number,process_id number,supplier_code
number);
create table addition_supplier(file_id number,process_id number,supplier_code
number);
insert into main_supplier values(1,2,4567);
insert into main_supplier values(1,2,1234);
insert into main_supplier values(1,2,5890);
insert into addition_supplier values(1,2,7890);
insert into addition_supplier values(1,2,1234);
insert into addition_supplier values(1,2,5890);
在上表中,main_supplier表中的supplier_code不应存在于addition_supplier www.example.com中的supplier_code中table.so我在plsql块中写入了一个游标。
cursor c1 select ta.supplier_code
from main_supplier ta
where ta.file_id=1
and ta.process_id= 2
and exists(select 1
from addition_supplier sa
where sa.file_id=ta.file_id
and sa.process_id= ta.process_id
and sa.supplier_code=ta.supplier_code);
open c1;
loop
fetch c1 into a;
if a is not null then
raise error;
end if;
end loop;
上述选择查询是否正确?
1条答案
按热度按时间umuewwlo1#
查询本身有效。不知道您要做什么,因为您的查询结果是:
| 供应商代码|
| - ------|
| 1234|
| 小行星5890|
这是EXISTS()条件的结果-如果这是你要找的,那么,是的,你的SQL是好的,你得到了表中不应该存在的行-你将如何处理它们取决于你。你的(示例)PL/SQL代码将在第一行引发错误并退出。但这只是一个示例,希望...
试验
获得此结果的另一种方法是使用INNER JOIN ...