转自:http://tunps.com/oracle-create-or-replace-table
Oracle数据库和其他数据库(比如MySQL)在新建数据表的时候有以下区别:
SQL> create or replace table testTb;
create or replace table testTb
ORA-00922: 选项缺失或无效 只能使用先drop再create来代替
drop table testTb;
create teble testTb(
fid varchar2(4),
fname varchar2(10)
);
可以用create or replace的对象有:functions, procedures, packages, types, synonyms, trigger and views,就是没有table,也没有sequence。
drop掉一个并不存在的表报错:
SQL> drop table non_exists;
drop table non_exists
ORA-00942:
表或视图不存在 drop table容错的方法是:
BEGIN
DROP TABLE non_exists_table;
EXCEPTION
WHEN OTHERS THEN
IF sqlcode != -0942 THEN RAISE; END IF;
END;
/ 错误代码:-0942
drop sequence容错的方法是:
BEGIN
DROP SEQUENCE non_exists_sequence;
EXCEPTION
WHEN OTHERS THEN
IF sqlcode != -2289 THEN RAISE; END IF;
END;
/ 错误代码:-2289
参考:
http://docs.oracle.com/cd/B14117_01/server.101/b10759/statements_7002.htm#i2095331
http://stackoverflow.com/questions/1008248/how-do-i-use-create-or-replace
分享到:
相关推荐
CREATE [OR REPLACE] TYPE typename AS { OBJECT | TABLE | VARRAY } (attribute1, attribute2, ...); ``` 其中,typename 是自定义类型的名称,attribute1, attribute2, ... 是该类型的属性。 例如,下面是一个...
在Oracle数据库管理中,删除已存在的表是一项常见的操作。然而,为了确保数据安全,避免误删,通常需要在执行删除前进行验证。本篇将详细解释如何通过SQL语句和存储过程来安全地删除Oracle数据库中的表。 首先,...
今天在实践过程中遇到一个问题, 我想往数据库插入多条数据时,使用了如下语句: ...create or replace table pm_ci ( ci_id varchar2(20) not null, stu_ids varchar2(100) ); create table pm_stu( stu_id
- `PRAGMA AUTONOMOUS_TRANSACTION`:允许函数内部提交或回滚事务,这对于执行`CREATE OR REPLACE TYPE`这样的DDL语句是必要的。 3. **查询表结构**: - 使用`user_TAB_COLUMNS`视图查询指定表的所有列名和数据...
二、常用SQL: 1.建表前检查语句: MySQL的: drop table if exists 表名; SQL Server的: IF EXISTS (SELECT name FROM sysobjects WHERE name = '... Oracle的: create or replace table 表名 ...; -- 直接写建表语句
CREATE OR REPLACE PROCEDURE 过程名(参数列表) AS -- 声明变量 BEGIN -- 执行体 END 过程名; ``` 例如,创建一个名为 `test` 的存储过程,带有一个输入参数 `workDate`: ```sql CREATE OR REPLACE PROCEDURE ...
创建存储过程的基本语法为:`CREATE OR REPLACE PROCEDURE procedure_name (parameter1, parameter2, ...) AS ... BEGIN ... END;`其中,`procedure_name`是存储过程的名称,`parameter1, parameter2, ...`是存储...
- `CREATE OR REPLACE TRIGGER`:创建或替换现有触发器。 - `BEFORE INSERT ON SYS_SYS_LOG`:在向`SYS_SYS_LOG`表插入数据之前触发。 - `FOR EACH ROW`:对于每行数据都执行触发器操作。 - `SELECT "SYS_SYS_LOG_id...
CREATE OR REPLACE TRIGGER TRIGGER_UNDROPTABLE BEFORE DROP OR TRUNCATE ON DATABASE BEGIN IF ora_login_user NOT IN ('SYS') THEN IF UPPER(dictionary_obj_type) = 'TABLE' OR UPPER(dictionary_obj_type) = ...
CREATE OR REPLACE PROCEDURE procedure_name ( parameter1 IN data_type, parameter2 OUT data_type ) AS -- 声明变量 variable_name data_type; BEGIN -- 存储过程的执行体 END procedure_name; ``` ...
创建存储过程的基本语法为:`CREATE OR REPLACE PROCEDURE 过程名(参数列表) AS DECLARE 声明部分 BEGIN 执行体 END;`。其中,过程名是存储过程的名称,参数列表是存储过程的输入参数,DECLARE 部分是声明变量的部分...
在Oracle中,可以通过`CREATE OR REPLACE PROCEDURE`语句来创建存储过程。 **语法格式**: ```sql CREATE OR REPLACE PROCEDURE procedure_name ( parameter1 IN data_type, parameter2 OUT data_type ) AS -- ...
1. 创建逻辑目录:CREATE OR REPLACE DIRECTORY DIR_x1 AS 'd:dbexp'; 2. 创建外部表结构:CREATE TABLE X1 (...) ORGANIZATION EXTERNAL (...); 3. 查询外部表:SELECT * FROM X1; 外部表的限制: * 外部表是只读...
在Oracle中,`CREATE TABLE`语句用于创建新表。例如: ```sql CREATE TABLE test ( names VARCHAR2(12), dates DATE, num INT, doud DOUBLE ); ``` 这里创建了一个名为`test`的表,包含四个字段:`names`(类型...
CREATE OR REPLACE PROCEDURE procedure_name (param1 IN param_type, param2 OUT param_type) AS -- 声明变量 BEGIN -- 存储过程的执行体 END procedure_name; ``` 例如,创建一个名为`test`的存储过程,接收一个...
使用`CREATE OR REPLACE PROCEDURE`语句创建存储过程。例如: ```sql CREATE OR REPLACE PROCEDURE test(var_name_1 IN type, var_name_2 OUT type) AS -- 声明变量 BEGIN -- 存储过程的执行体 END test; ``...