在oracle数据库中对某表进行操作之前,先查询其是不是存在
2008-01-13 13:22
309 查看
如果写一个存储过程,使用某表,但是担心某表被同事不小心给删了,为了减少不必要的麻烦,可以判断一下
源代码如下
create or replace procedure pr_test_zzw as
num number;
begin
select count(*) into num from all_tables where table_name='BZ_ZZW_TEST';
if num>0 THEN
execute immediate 'drop table bz_zzw_test';
ELSE
dbms_output.put_line('这张表不存在');
END IF;
end;
如果在数据库中表确实不存在:
执行情况如下:
SQL> create or replace procedure pr_test_zzw as
2 num number;
3 begin
4 select count(*) into num from all_tables where table_name='BZ_ZZW_TEST';
5 if num>0 THEN
6 execute immediate 'drop table bz_zzw_test';
7 ELSE
8 dbms_output.put_line('这张表不存在');
9 END IF;
10 end;
11 /
Procedure created
SQL> set serveroutput on;
SQL> execute pr_test_zzw;
这张表不存在
PL/SQL procedure successfully completed
SQL>
首先建立这张需要判断的表:
create table bz_zzw_test as
select * from bill.t_si_external_id
where latn_id = 543
and rownum<19;
select * from bz_zzw_test;
-----18条记录
重新执行一下那个存储过程,就会看到:
SQL> execute pr_test_zzw;
PL/SQL procedure successfully completed
SQL> select count(*) from bz_zzw_test;
select count(*) from bz_zzw_test
ORA-00942: table or view does not exist
SQL>
这样就可以了。
源代码如下
create or replace procedure pr_test_zzw as
num number;
begin
select count(*) into num from all_tables where table_name='BZ_ZZW_TEST';
if num>0 THEN
execute immediate 'drop table bz_zzw_test';
ELSE
dbms_output.put_line('这张表不存在');
END IF;
end;
如果在数据库中表确实不存在:
执行情况如下:
SQL> create or replace procedure pr_test_zzw as
2 num number;
3 begin
4 select count(*) into num from all_tables where table_name='BZ_ZZW_TEST';
5 if num>0 THEN
6 execute immediate 'drop table bz_zzw_test';
7 ELSE
8 dbms_output.put_line('这张表不存在');
9 END IF;
10 end;
11 /
Procedure created
SQL> set serveroutput on;
SQL> execute pr_test_zzw;
这张表不存在
PL/SQL procedure successfully completed
SQL>
首先建立这张需要判断的表:
create table bz_zzw_test as
select * from bill.t_si_external_id
where latn_id = 543
and rownum<19;
select * from bz_zzw_test;
-----18条记录
重新执行一下那个存储过程,就会看到:
SQL> execute pr_test_zzw;
PL/SQL procedure successfully completed
SQL> select count(*) from bz_zzw_test;
select count(*) from bz_zzw_test
ORA-00942: table or view does not exist
SQL>
这样就可以了。
相关文章推荐
- 使用OTL对oracle数据库进行增加,删除,编辑和查询操作。
- 对Oracle数据库的CLOB字段进行对比查询等操作
- 利用pandas连接mysql,oracle数据库进行查询和插入操作
- .NET2003安裝出现一直重启问题和SQL 2000安装出现“以前进行的程序安装创建了挂起的文件操作。运行程序之前,必须重新起动计算机。”~[解决方案]
- 高并发操作和查询的数据采集和查询系统的oracle数据库设计建议
- 安装sql server时出现 “以前进行的程序安装创建了挂起的文件操作。运行安装程序之前,必须重新启动计算机” 这种错误的解决办法
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- "以前进行的程序安装创建了挂起的文件操作。运行程序之前,必须重新起动计算机。"的解决办法
- mysql查询数据的同时对它进行删除操作
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- SQL如何进行增加、删除、改写、查询等数据操作
- Oracle数据库中字段定义为Char类型,Hibernate用该字段进行动态绑定参数查询,获取不到结果的问题
- Hive 中的外部表在数据源移动后,如何进行查询操作?
- Jav 4000 a操作Hbase进行建表、删表以及对数据进行增删改查,条件查询(转)
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- 采用sqltool进行oracle查询操作,查出的结果显示出来是乱码
- oracle数据库增删改后查询修改之前的数据
- 如何查询Oracle数据库的操作日志
- Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询