查找所有相关表中是否存在数据 (PL/SQL)
Find if exists data in all related tables (PL/SQL)
我正在寻找一种方法来查找数据是否存在于所有相关表中。 (ID_HOUSE = 1) 查找所有 ID_HOUSE 列中是否存在 1。
Table House Table Bedrooms Table Garden and more...
ID_HOUSE ID_HOUSE (F) ID_HOUSE (F)
ID_BEDR ID_GARDEN
ID_HOUSE = 数字;
我想知道他的相关表中是否存在id为455的ID_HOUSE。例如:
Table House
ID_HOUSE = 455;
exists in ID_HOUSE(table bedrooms) or ID_HOUSE(table garden) and more...???
OUTPUT: true/false (exists in any other related tables or not)
我的第一个想法是“SELECT CASE WHEN COUNT and Joins WHERE ID_HOUSE= 1”,但我不知道该怎么做
有什么帮助吗?
前段时间我这样做是为了找到所有相关的表格,也许可以帮助你:
declare
--
v_exist varchar2(1);
--
begin
--
for reg in (select distinct table_name
from all_constraints
where upper(r_owner) = upper(&owner)
and constraint_type = 'R'
and r_constraint_name in (select constraint_name
from all_constraints
where constraint_type in ('P', 'U')
and upper(table_name) = upper(&origin_table)
and upper(owner) = upper(&owner))
order by table_name)
loop
--
v_exist := null;
--
begin
--
execute immediate 'select 1 from ' || reg.table_name || ' ' || &v_where into v_exist;
--
if v_exist is not null then
dbms_output.put_line(reg.table_name);
end if;
--
exception
when NO_DATA_FOUND then
null;
when TOO_MANY_ROWS then
dbms_output.put_line(reg.table_name);
when others then
dbms_output.put_line('Table ' || reg.table_name || '; error: ' || sqlerrm);
end;
--
end loop;
--
end;
我正在寻找一种方法来查找数据是否存在于所有相关表中。 (ID_HOUSE = 1) 查找所有 ID_HOUSE 列中是否存在 1。
Table House Table Bedrooms Table Garden and more...
ID_HOUSE ID_HOUSE (F) ID_HOUSE (F)
ID_BEDR ID_GARDEN
ID_HOUSE = 数字; 我想知道他的相关表中是否存在id为455的ID_HOUSE。例如:
Table House
ID_HOUSE = 455;
exists in ID_HOUSE(table bedrooms) or ID_HOUSE(table garden) and more...???
OUTPUT: true/false (exists in any other related tables or not)
我的第一个想法是“SELECT CASE WHEN COUNT and Joins WHERE ID_HOUSE= 1”,但我不知道该怎么做 有什么帮助吗?
前段时间我这样做是为了找到所有相关的表格,也许可以帮助你:
declare
--
v_exist varchar2(1);
--
begin
--
for reg in (select distinct table_name
from all_constraints
where upper(r_owner) = upper(&owner)
and constraint_type = 'R'
and r_constraint_name in (select constraint_name
from all_constraints
where constraint_type in ('P', 'U')
and upper(table_name) = upper(&origin_table)
and upper(owner) = upper(&owner))
order by table_name)
loop
--
v_exist := null;
--
begin
--
execute immediate 'select 1 from ' || reg.table_name || ' ' || &v_where into v_exist;
--
if v_exist is not null then
dbms_output.put_line(reg.table_name);
end if;
--
exception
when NO_DATA_FOUND then
null;
when TOO_MANY_ROWS then
dbms_output.put_line(reg.table_name);
when others then
dbms_output.put_line('Table ' || reg.table_name || '; error: ' || sqlerrm);
end;
--
end loop;
--
end;