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;

时间: 2016-01-26

大部分情况下,这种动态生成的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

做个笔记,仅供参考 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,//是否允许空

--第一种方法: 查询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

获取表字段: 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 /*

添加字段的语法: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中查询某个表的总字段数,要用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

本文实例讲述了php+mysqli实现将数据库中一张表信息(包括表头)打印到表格里的方法.分享给大家供大家参考.具体如下: 这段代码将就看吧.需要学习基础知识.代码如下: 复制代码 代码如下: <?php $mysqli = new MySQLi("localhost","root","123456","liuyan"); if(!$mysqli){  die($mysqli->error); } function

分别创建增加.删除.更新的触发器(Trigger)来达到两张表之间数据同步的目的. 1:数据同步增加: 如有两张表--A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. 复制代码 代码如下: CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3) SELECT A表字段1,A表字段2,A表字段3 FROM INSERTED END

搭建一个oracle,下面会有很多schema,每个schema下的数据都不影响. 感觉和mysql的库的概念很像,现在用的数据库管理系统其实也是这么划分的,mysql用的ip+port+库标识,oracle用ip+port+schema标识,平时还总听到一个实例的概念,我的理解就是实例就是一系列相关进程,代表了一个数据库服务.目前线上为了节省资源,常常把机器分成多个实例,用不同的端口号标识,每个实例上有多个schema. 旭哥跟我说的很形象,oracle一个实例上有对应多个库.mysql一个库

以前只会写一些简单的updaet语句,比如updae table set c1='XXX' 之类的 今天遇到一个数据订正的问题,项目背景如下,有个表A,有两个字段a1,a2还有一个关联表B,其中也有两个字段,b1和b2.其中a2和b2是关联的,想把A中的字段a1更新成B中的b1 理论上sql应该挺好写的,但是在oralce中实现了半天一直报语法错误.而且确实还有些小小细节没有注意到. 首先上测试数据 表1,ZZ_TEST1 表2,ZZ_TEST2 要把表一的text更新成表二的text1值,对应

笔者认为,在创建索引时要做到三个适当,即在适当的表上.适当的列上创建适当数量的索引.虽然这可以通过一句话来概括优化的索引的基本准则,但是要做到这一点的话,需要数据库管理员做出很大的努力.具体的来说,要做到这个三个适当有如下几个要求. 一. 根据表的大小来创建索引. 虽然给表创建索引,可以提高查询的效率.但是数据库管理员需要注意的是,索引也需要一定的开销的.为此并不是说给所有的表都创建索引,那么就可以提高数据库的性能.这个认识是错误的.恰恰相反,如果不管三七二十一,给所有的表都创建了索引,那么其反

Oracle INSERT 语句 方法1 我估计有点 SQL 基础的人都会写 INSERT 语句.下面是 SQL 标准写法. INSERT INTO employees (employee_id, name) VALUES (1, 'Zhangsan'); INSERT INTO employees VALUES (1, 'Shangbo'); 方法2 其实, Oracle 还支持下面的写法,作用和上面的语句完全相同. INSERT INTO (SELECT employee_id, name

ORACLE 中ROWNUM用法总结!  对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.>,& gt;=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum 伪列的意义就不应该感到惊奇,同样是伪列,rownum 与 rowid 可有些不一样,下面以例子说明: 假设某个表

在使用ORACLE的过程中,会出现各种各样的问题,各种各样的错误,其中ORA-12899就是前段时间我在将数据导入到我本地机器上的时候一直出现的问题.不过还好已经解决了这个问题,现在分享一下,解决方案; 出现ORA-12899,是字符集引起的,中文在UTF-8中占3个字节,ZHS16GBK中占2个字节,而源dmp文件字符集是ZHS16GBK库里倒出来的数据,现在要导入到目标字符集为UTF-8的库里,所以会出现ORA-12899 其实只要修改一下ORACLE 的字符集就可以很好的解决这个问题; 但

SQL%NOTFOUND 是一个布尔值.与最近的sql语句(update,insert,delete,select)发生交互,当最近的一条sql语句没有涉及任何行的时候,则返回true.否则返回false.这样的语句在实际应用中,是非常有用的.例如要update一行数据时,如果没有找到,就可以作相应操作.如: begin update table_name set salary = 10000 where emp_id = 10; if sql%notfound then insert into

oracle如何查看表的字段是否存在,Oracle删除表、字段之前判断表、字段是否存在...相关推荐

  1. 注册表中注销mysql服务器,彻底删除mysql服务(清理注册表)

    由于安装某个项目的执行文件,提示要卸载MySQL以便它自身MySQL安装,然后我禁用了MYSQL服务,再把这个文件夹删除后,发现还是提示请卸载MYSQL服务. 解决步骤: 1.以管理员身份运行命令提示 ...

  2. js获得form表单的值$('#form1').serializeObject()/serialize()/serializeArray对比及判断表单中是否有输入框未输入值

    1.$("#form1").serialize() 把form表单的值序列化成一个字符串,如username=admin&password=admin123 2.$(&qu ...

  3. oracle数据库查看归档路径,centos7下查oracle归档及物理文件路径

    (本人菜鸟,写此随笔仅为学习,大神勿喷,谢谢!) Oracle查看当前连接的数据库实例及状态: SQL> select instance_name,status from v$instance; ...

  4. oracle日志如何查看,oracle如何查看日志

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:oracle如何查看日志? 问题详情:请问oracle 该如何查看日志,希望能有具体的步骤.试了很久 都还回答:Oracle日志查看 ...

  5. 聚合函数的计算机控件,ACCESS VBA编程必须掌握的聚合函数(判断 表 值).doc

    ACCESS VBA编程必须掌握的聚合函数(判断 表 值) VBA中的聚合函数及用法 --如何判断表中的值? *****常用域聚合函数***** 1.DCount(expr, domain, [cri ...

  6. Oracle中查看所有表和字段

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

  7. 怎么查看oracle数据库表的主键,Oracle中查看所有的表,用户表,列名,主键,外键...

    在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 : select table_name from user_ ...

  8. oracle查询列属性,Oracle中查看所有的表,列,属性,…

    在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 :  select table_name from user ...

  9. oracle 其他用户表主键,Oracle中查看所有的表,用户表,列名,主键,外键

    在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 : select table_name from user_ ...

最新文章

  1. 漫画:最长公共子序列
  2. 作为程序员,你评估工作量留 buffer 吗?
  3. 生成docker镜像
  4. QML和C ++之间的数据类型转换
  5. curl post https_Linux命令cURL详解,并实现文件定时上传到ftp服务器的程序
  6. 卖萌屋学术站发布!通往高效刷论文之路
  7. MongoDB初探系列之二:认识MongoDB提供的一些经常使用工具
  8. 自媒体人本质是互联网公司内容运营的角色
  9. (测试可用)针式打印机打印WEB页面字体不清晰,解决方法
  10. OVS使用VLAN隔离VM流量
  11. 项目管理知识体系指南 (一)
  12. C# 获取汉字的对应的全拼音和拼音首字母(含源码)
  13. 笔试——分频电路设计
  14. U盘Linux启动引导
  15. java动态代理(AOP)
  16. 计算机组成原理与体系结构 - 6分
  17. 傅里叶级数展开和傅里叶变换(一)
  18. 普利姆算法 修路问题
  19. Mbatis-Plus整合springboot详细学习笔记
  20. 凤凰卫视、迪士尼、百度、圣戈班、万豪、汇丰等公司高管变动

热门文章

  1. php n维数组扁平化,js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解...
  2. 代码要想写得好,品位必须提一提!
  3. “本机号码一键登录”是如何实现?
  4. 赠书:深入理解MySQL主从原理
  5. 每日一皮:这也许是稍微二字最好的诠释...
  6. 从Uber微服务看最佳实践如何炼成?
  7. matlab 区间预测,用神经网络进行预测的MATLAB算法实现?
  8. 命名实体识别_用膨胀卷积进行命名实体识别 NER
  9. tensorrt 低精度推理
  10. windows 安装cython-bbox