如果先前已创建表,则需要在数据库上运行delete语句。
问题是-我不能只运行delete语句,因为该产品不在每个客户端的生产环境中-因此,他们没有我要在其中运行delete语句的表,最终错误00942. 00000 - "table or view does not exist"
。
一个例子:
我想运行以下内容:
IF EXISTS (TABLE TB_FIELD)
DELETE FROM TB_FIELD WHERE ID = '213';
如果没有通用语句,我希望可以在Oracle数据库中运行该语句
答案 0 :(得分:5)
这是Oracle的一个。假设当前用户拥有该表。如果要更新其他人的表,则需要用dba_tables换出user_tables。
declare
table_name_l user_tables.table_name%type;
begin
select table_name into table_name_l from user_tables where table_name = 'TB_FIELD';
-- if we didn't raise an exception the table must exist
execute immediate 'delete from tb_field where id = :1' using '213';
exception
when no_data_found then
-- do nothing - table doesn't exist
null;
end;
答案 1 :(得分:2)
最简单的方法是捕获并忽略“找不到表”异常:
declare
l_id number := 12345;
begin
execute immediate 'delete tb_field where id=:1' using l_id;
exception
when others then
if sqlcode != -942 /*table or view does not exist*/ then
raise;
end if;
end;
/