如何在create 之前 判断表、视图是否存在

[复制链接]
查看11 | 回复9 | 2007-3-30 06:18:53 | 显示全部楼层 |阅读模式
在存储过程中,创建表之前是否可以加以判断啊?
就是象SQL Server 2000中的 (if exists) 语句之类的啊?
ssql:='create table gyf_temp1 as select * from gyf_s';
execute immediate ssql;
高手指点下,谢谢啊>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
查詢user_tables,但不建議在pl/sql中寫DDL!
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
那请问是要在哪个地方写呢??
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
我想实现存在这个表就删除,要怎么实现啊??
这样写不可以:
drop table GYF_成绩表
if exists (select * from user_tables where table_name='GYF_成绩表');
HuiYiSky
灰亦
还要谢谢你啊
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
create or replace就可以了
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
create or replace table aaaa as select * from bbbb;
是这样写吗??会出错,

我写出来了我想要的结果,可是好复杂就是

(其中table_count为int类型的变量)
select count(*) into table_count from user_tables where table_name='GYF_TEMP1';
if(table_count!=0) then

ssql:='drop table GYF_TEMP1';

execute immediate ssql;
end if;
还是要谢谢大家啊
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
最初由 gyf6067 发布
[B]create or replace table aaaa as select * from bbbb;
是这样写吗??会出错,

我写出来了我想要的结果,可是好复杂就是

(其中table_count为int类型的变量)
select count(*) into table_count from user_tables where table_name='GYF_TEMP1';
if(table_count!=0) then

ssql:='drop table GYF_TEMP1';

execute immediate ssql;
end if;
还是要谢谢大家啊 [/B]

Oracle中只能这样写。


回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
直接创建,加例外处理.
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
[PHP]
DECLARE
BEGIN
FOR T IN (SELECT 'TRUNCATE TABLE '||TABLE_NAME TRUNCATE_TBL,'DROP TABLE '||TABLE_NAME DROP_TBL

FROM USER_TABLES

WHERETABLE_NAME IN ('TABLE_A','TABLE_B')) LOOP
EXECUTE IMMEDIATE T.TRUNCATE_TBL;
EXECUTE IMMEDIATE T.DROP_TBL;
END LOOP;
END;
/

[/PHP]
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
最初由 atgc 发布
[B][PHP]
DECLARE
BEGIN
FOR T IN (SELECT 'TRUNCATE TABLE '||TABLE_NAME TRUNCATE_TBL,'DROP TABLE '||TABLE_NAME DROP_TBL

FROM USER_TABLES

WHERETABLE_NAME IN ('TABLE_A','TABLE_B')) LOOP
EXECUTE IMMEDIATE T.TRUNCATE_TBL;
EXECUTE IMMEDIATE T.DROP_TBL;
END LOOP;
END;
/

[/PHP] [/B]

谢谢大家的帮助啊~~
我没看懂这段代码的意思,运行也有错误,可否说明一下啊??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行