Oracle删除表、字段之前判断表、字段是否存在

这篇文章主要介绍了Oracle删除表、字段之前判断表、字段是否存在的相关资料,需要的朋友可以参考下

在Oracle中若删除一个不存在的表,如 “DROP TABLE tableName”,则会提示:

ORA-00942:表或视图不存在

若在程序中执行该语句则会报异常,这就需要我们在删除表前先判断该表是否存在,若存在则删除.

?


1

2

3

4

5

6

7

8

9

10

11

DECLARE

num NUMBER;

BEGIN

SELECT COUNT(1)

INTO num

FROM USER_TABLES

WHERE TABLE_NAME = UPPER(‘tableName‘);

IF num > 0 THEN

EXECUTE IMMEDIATE ‘DROP TABLE tableName‘;

END IF;

END;

在Oracle中若删除表中一个不存在的字段,如 “alter table test drop column xxx”,则会提示:

ORA-00904:”xxx”:标识符无效

若在程序中执行该语句则会报异常,这就需要我们在删除字段前先判断该字段是否存在,若存在则删除.

?


1

2

3

4

5

6

7

8

9

10

11

12

DECLARE

num NUMBER;

BEGIN

SELECT COUNT(1)

INTO num

from cols

where table_name = upper(‘tableName‘)

and column_name = upper(‘columnName‘);

IF num > 0 THEN

execute immediate ‘alter table tableName drop column columnName‘;

END IF;

END;

 

时间: 2024-12-15 01:52:09

Oracle删除表、字段之前判断表、字段是否存在的相关文章

Oracle 11g对依赖的判断达到字段级

在Oracle 10g下,判断依赖性只达到了对象级,也就是说存储过程访问的对象一旦发生了变化,那么Oracle就会将存储过程置为INVALID状态.所以在为表做了DDL操作后,需要把存储过程重新进行编译. 在Oracle 11g下,对依赖的判断更加细化,判断到了字段级.虽然有这么好的特性,但我还是建议做了DDL后把存储过程再重新编译一下. Oracle 10g下: SQL> select * from v$version; BANNER -----------------------------

Oracle删除当前用户下所有表数据

declare cursor cur is select table_name from user_tables; currow cur%rowtype; str varchar(2000); begin for currow in cur loop str:='truncate table '||currow.table_name; execute immediate str; dbms_output.put_line(str); end loop; end;

jQuery:提交表单前判断表单是否被修改过

表单加载完成后执行 : //表单中包含input(text,checkbox,hidden),select,radio,   $("#editWithdrawAutoApprovedConfig :input,#editWithdrawAutoApprovedConfig :checkbox,#editWithdrawAutoApprovedConfig :radio,#editWithdrawAutoApprovedConfig select").change(function()

sqlite 判断表中是否包含 某个字段

数据库 都有一个 根表..(我的理解) 也就是 你创建了一个数据库 里面就带有 一个表 sqlite_master 字段有 type , name  , tbl_name , rootpage ,sql . 可以执行 sql select * from sqlite_master  查看. sql 就是你创建表时 的create 语句. 根据返回的sql 语句判断是否包含 某个字段 sqlite 判断表中是否包含 某个字段

ORACLE—003:Create之创建表前判断表是否存在

建表前如何判断表是否存在呢,因为table是不支持replace的.下面的sql能帮到你. create前先判断表是否存在.例如,如果存在则drop掉那个表.当然你也可以定义自己的操作. declare v_cnt Number; begin select count(*) into v_cnt from user_tables where upper(table_name) like '%TMP_CLOB_SQL%'; if v_cnt>0 then execute immediate 'DR

model字段对象和forms字段对象的区别和联系

一.model字段对象 (一)_meta _meta是django.db.models.options.Options的实例,获取字段对象可通过模型类来进行获取,而_meta可提供如下功能: 获取模型的所有字段实例 通过名称获取模型的单个字段实例 1.获取模型的单个字段实例 In [19]: models.Book._meta.get_field("title") Out[19]: <django.db.models.fields.CharField: title> 2.获

oracle判断表中的某个字段是否为数字

本文分别介绍使用trim+translate函数或regexp_like函数判断表中的某个字段是否为数字的方法 1.使用trim+translate函数: select * from table where trim(translate(column,'0123456789',' ')) is NULL; 这里要注意的是:translate函数的第三个参数是一个空格,不是'', 因为translate的第三个参数如果为空的话,那么永远返回'',这样的就不能达到过滤纯数字的目的.这样把所有的数字都

常用数据库查询判断表和字段是否存在的SQL

常用数据库查询判断表和字段是否存在的SQL(如果结果为1表示存在,为0表示不存在) 1.MSSQL Server 表: SELECT COUNT(*) FROM dbo.sysobjects  WHERE name= 'table_name'; 字段: SELECT COUNT(*) FROM syscolumns  WHERE id=object_id('table_name') AND name= 'column_name'; 2.My SQL 表: SELECT COUNT(*) FROM

Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)

应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create or replace type splitTable is table of varchar2(100); 2.创建函数fn_splitString(功能是将字符串分割成多条记录)--测试语句select * from table(fn_splitString('ernanyinv','nan'))