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

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

ORA-00942:表或视图不存在

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

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”:标识符无效

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

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;
(0)

相关推荐

  • 解析如何查看Oracle数据库中某张表的字段个数

    Oracle中查询某个表的总字段数,要用SQL语句,或者在PL/SQL里面 复制代码 代码如下: select count(column_name) from user_tab_columns where table_name='T_B_AUDITOR' 能够查出来指定的那张表的字段数.下面是通过大致查看:select   tname,count(*)   from   col   group   by   tname; 复制代码 代码如下: 64 T_A_BOOKSTAGEINFO 465 T

  • oracle获取当前用户表、字段等详细信息SQL

    做个笔记,仅供参考 SELECT d.TABLE_NAME tbName,//表名 COALESCE(t.COMMENTS, ' ') tbDesc, //表注释 a.COLUMN_NAME columnName, //字段名 a.DATA_TYPE columnType, //字段类型 a.DATA_LENGTH width, //字段长度 a.DATA_SCALE precision,//字段小数位 decode(a.NULLABLE,'Y','0','1') notNull,//是否允许空

  • oracle 使用sql获取数据库表、表的字段的多种方法

    --第一种方法: 查询dba_tab_columns 复制代码 代码如下: select COLUMN_NAME,DATA_TYPE,DATA_LENGTH from dba_tab_columns where table_name =upper('表名') order by COLUMN_NAME --这种方法需要有DBA权限 --第二种方法: 查询user_tab_cols select COLUMN_NAME,DATA_TYPE,DATA_LENGTH from user_tab_cols

  • 在oracle 数据库查询的select 查询字段中关联其他表的方法

    大部分情况下,这种动态生成的sql查询语句写法如下: 复制代码 代码如下: select A表.字段1,A表.字段2,B表.字段返回,C表.字段返回 from A表 ,B表,C表 [where A表,B表,C表关联及各自的条件语句] 但是这个方法有一个缺点,那就是在动态的生成这个查询语句的业务逻辑程序仍然很复杂.这里就介绍一个降低业务逻辑复杂度的查询sql生成方式.其语法结构如下: 复制代码 代码如下: select A表.字段1,A表.字段2,B表.字段,C表.字段 from A表 [wher

  • oracle删除表字段和oracle表增加字段

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],-.); 修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],-.); 删除字段的语法:alter table tablename drop (column); 添加.修改.删除多列的话,用逗号隔开. 使用alter

  • Oracle 查询表信息获取表字段及字段注释

    获取表字段: select * from user_tab_columns where Table_Name='用户表' order by column_name 获取表注释: select * from user_tab_comments where Table_Name='用户表' order by Table_Name 获取字段注释: select * from user_col_comments where Table_Name='用户表' order by column_name /*

  • oracle用什么SQL语句判断表存不存在

    正在看的ORACLE教程是:oracle用什么SQL语句判断表存不存在.SQL SERVER用来判断表或视图存在的语句在ORACLE中不能用,请问该怎么写. 谢谢. 提问者: - 最佳答案 exists(select tname from tab where tname ='TABLENAME') 记得表名要大写,因为ORACLE是区分大小写的,所有的表名都存放在tab表中

  • 使用layer弹窗提交表单时判断表单是否输入为空的例子

    获得 layer 文件包后,解压并将 layer 整个文件夹(不要拆分结构) 存放到你项目的任意目录,使用时,只需引入 layer.js 即可 使用时一定他要先引入jq1.8,或者以上版本!!! 下面是提交表单的实列 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=devi

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

    在Oracle中若删除一个不存在的表,如 "DROP TABLE tableName",则会提示: ORA-00942:表或视图不存在 若在程序中执行该语句则会报异常,这就需要我们在删除表前先判断该表是否存在,若存在则删除. DECLARE num NUMBER; BEGIN SELECT COUNT(1) INTO num FROM USER_TABLES WHERE TABLE_NAME = UPPER('tableName'); IF num > 0 THEN EXECUT

  • Oracle删除当前用户下所有表的方法适用于有或没有删除权限

    1.如果有plsql客户端,则可以使用该用户登录,选中所有表 右键Drop即可. 2.如果有删除用户的权限,则可以: drop user user_name cascade; 加了cascade就可以把用户连带的数据全部删掉. 删除后再创建该用户. --创建用户 create user 用户名 profile default identified by 密码 default tablespace 表空间名称 temporary tablespace TEMP account unlock; --

  • 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等

    用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200) 2.删除字段 ALTER TABLE table_NAME DROP COLUMN column_NAME 3.修改字段类型 ALTER TABLE table_name ALTER COLUMN column_name new_data_type 4.sp_rename 改名 更改当前数据库中用户创建对象(如表.列或用户定义数据类型)的名称. 语法 sp_rename

  • SQL重复记录查询 查询多个字段、多表查询、删除重复记录的方法

    SQL重复记录查询 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 例二:  select * from testtable where numeber in (select number from people group by numbe

  • Oracle删除表前判断表名是否存在若存在则删除

    在Oracle中若删除一个不存在的表,如 "DROP TABLE notExistTable",则会提示: ORA-00942:表或视图不存在, 若使用程序执行该语句则会报异常,这就需要我们再删除表前判断该表是否存在,若存在则删除. 下面是不使用存储过程实现删除表的SQL: 复制代码 代码如下: <span style="font-family:Times New Roman;font-size:18px;">DECLARE num NUMBER; BE

  • Oracle 删除用户和表空间详细介绍

    Oracle 删除用户和表空间 Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成.  步骤一:  删除user drop user ×× cascade 说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的. 步骤二: 删除tablespace DROP TABLESPACE tablespace_name INCLUDI

  • Oracle删除字段中的空格、回车及指定字符的实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: create or replace procedure PROC_test is --Description:删除字段中的指定字符(回车chr(13).换行chr(10)) --By LiChao --Date:2016-03-01 colname varchar(20); --列名 cnt number; --包含换行符的列的行数 v_sql varchar(2000); --动态SQL变量 begin --读取表中的列 for col i

  • mysql判断表是否存在然后批量删除的操作

    1.在网上找了许久都没有找到判断表是否存在,然后模糊删除的.但是最后找到了一个曲线救国的方法. 需求:删除表中后缀是 _待删除 的表 1.第一步,找到所有的这样的表,并且拼装好删除表的sql Select CONCAT( 'DROP TABLE IF EXISTS ', table_name, ';' ) FROM information_schema.tables Where table_name LIKE '%_待删除'; 执行结果 2.第二步:去一一执行删除语句,有能力的可以去写一个脚本执

随机推荐