oracle中这句话怎么写?
判断table temp是否存在,如果存在则drop掉。
我只知道在mysql中:DROP TABLE IF EXISTS temp
在mssql中:IF OBJECT_ID('dbo.temp') IS NOT NULL DROP TABLE dbo.temp
请问在oracle,db2,sybase中分别怎么写?
问题点数:30、回复次数:12Top
1 楼fuxia(双子星)回复于 2005-03-02 13:44:33 得分 1
先查询是否存在,再删除,分2步Top
2 楼feng1959(血踪万里)回复于 2005-03-02 13:48:48 得分 1
select * from tab
where tname='table temp'
判断是否有值Top
3 楼masse(当午 http://blog.sina.com.cn/xukf)回复于 2005-03-02 14:07:48 得分 0
fuxia(mike) :
原理谁都懂,写出具体的语句好吗?
feng1959(血踪万里)
我要的是删除掉一个table的语句,
能给个能执行的吗?Top
4 楼sweetlxp(ping)回复于 2005-03-02 14:30:19 得分 4
写一个简单的存储过程
create or replace procedure test1 is
ls_tab_name varchar2(20);
bdgin
select tname into ls_tab_name from tab where tname='TEST'
if ls_tab_name is not null then
drop table test;
end if;
end test1;Top
5 楼bad_love(东子)回复于 2005-03-02 15:50:07 得分 4
写存储过程吧:
DECLARE
v_name user_tables.table_name%type;
begin
select table_name into v_name from user_tables where table_name = 'test';
if v_name is not null then
execute immediate 'drop table t1';
end if;
exception
WHEN NO_DATA_FOUND then
dbms_output.put_line('不存在此表');
end;Top
6 楼fingerfox(狐狸【人不要脸,天下无敌】)回复于 2005-03-02 15:56:11 得分 4
declare v_count integer;
begin
Select Count(*) into v_Count from user_Tables where Table_Name='temp'
if v_count >0 then
drop table temp;
end if;
end;Top
7 楼masse(当午 http://blog.sina.com.cn/xukf)回复于 2005-03-03 09:01:55 得分 0
有没有一行语句能实现的?简洁一点的,
像我给的例子那样的Top
8 楼lynx(lynx)回复于 2005-03-03 09:42:53 得分 5
没有.Top
9 楼feng1959(血踪万里)回复于 2005-03-03 09:44:44 得分 5
一行!不知道。帮你顶。Top
10 楼lynx(lynx)回复于 2005-03-03 09:48:29 得分 3
不过很奇怪楼主为什么这么执著于表存不存在呢?
存在你也是要删,不存在删了也没有问题,Oracle还会特别提示你。Top
11 楼masse(当午 http://blog.sina.com.cn/xukf)回复于 2005-03-03 09:56:33 得分 0
lynx(lynx)
如果表不存在,系统只是报一个msg,而不是报error导致程序终止的话就没问题
我是怕有的数据库突然报错就导致程序终止,
比如mysql,如果不加if exists的话在有的版本上就会有问题,
当然,mssql是可以忽略错误的。
oracle,db2,sybase里面可能又有所不一样,
所以为了安全,最好还是先判断一下
因为建表过程非常复杂,所以希望比较简洁
Top
12 楼shotking(小金)回复于 2005-03-03 10:33:01 得分 3
delphi里面用个try...except把错误屏蔽就行了
try
//exec drop table sql
except
end;Top




