`

oracle用存储过程实现mysql的drop if exists

 
阅读更多
以下oralce存储过程作用类似于mysql的 drop if exists功能。
--判断制定表是否存在,如果存在删除该表。
create or replace procedure proc_dropifexists(   
    p_table in varchar2   
) is   
    v_count number(10);   
begin   
   select count(*)   
   into v_count   
   from user_tables   
   where table_name = upper(p_table);   
 
   if v_count > 0 then   
      execute immediate 'drop table ' || p_table ||' purge';   
   end if;   
end proc_dropifexists;

在调用存储过程的时候出了点小问题。在PLSQL中执行以上存储过程,网上很多文章都
用     exec proc_dropifexists('表名');
或者   execute proc_dropifexists('表名');
来执行。但本人在执行以上语句的时候总是报'ora 00900' 无效语句错误,不知为何。

最后用:  call proc_dropifexists('表名'); 执行成功。

不知道以上原理是什么,如果有懂原理的大神看到,请指教。
0
4
分享到:
评论

相关推荐

    oracle数据库学习笔记总结

    MySQL的: drop table if exists 表名; SQL Server的: IF EXISTS (SELECT name FROM sysobjects WHERE name = '表名' AND type = 'U') DROP TABLE 表名; Oracle的: create or replace table 表名 ...; -- 直接写...

    MySQL与Oracle差异比较之五存储过程&Function

    - Oracle使用`CREATE OR REPLACE PROCEDURE/FUNCTION`来创建或替换存储过程和函数,而MySQL则需要先使用`DROP PROCEDURE/FUNCTION IF EXISTS`删除已存在的同名对象,再创建新的。 - 在Oracle中,如果存在同名的...

    删除流程存储过程

    在MySQL中,命令为`DROP PROCEDURE IF EXISTS [ProcedureName]`。这些命令会永久地从数据库中移除指定的存储过程。 5. **影响分析**:删除存储过程可能会影响到依赖于它的其他对象,如触发器、视图或应用程序代码。...

    创建存储过程.rar

    DROP PROCEDURE IF EXISTS proc_name; ``` 六、最佳实践 在使用存储过程时,应注意以下几点: 1. 尽可能减少嵌套层次,避免过于复杂的存储过程。 2. 为存储过程提供清晰的注释,方便维护。 3. 考虑性能,合理设计...

    在Mysql数据库里通过存储过程实现树形的遍历

    在MySQL数据库中,由于没有像Oracle的`CONNECT BY`那样直接支持树形遍历的语法,因此我们需要通过存储过程来实现这一功能。在多级别菜单栏或权限系统中,特别是涉及部门上下级关系时,树形结构的遍历至关重要。以下...

    mysql生成oracle序列

    DROP TABLE IF EXISTS `sequence`; CREATE TABLE `sequence` ( `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_croatian_ci NOT NULL, `current_value` int(11) NOT NULL, `increment` int(11) NOT NULL ...

    mysql经典代码,你想学mysql吗,快来下吧!

    - **DROPPROCEDURE IF EXISTS**: 检查是否存在同名的存储过程,如果存在则删除。 - **CREATE PROCEDURE**: 创建一个名为`HelloWorld`的存储过程,接受一个`VARCHAR(30)`类型的参数`str`。 - **SET @var**: 设置一个...

    MySQL递归查询

    该方法是使用 MySQL 的存储过程来实现递归查询。首先,创建一个函数 `getChildLst`,该函数将返回一个由所有子节点号组成的字符串。该函数使用 WHILE 循环来递归地查找所有子节点,并使用 `FIND_IN_SET` 函数来判断...

    oracle交叉表sql

    - `DROP PROCEDURE IF EXISTS`:如果已存在名为`SP_CrossTable`的存储过程,则先删除。 - `CREATE DEFINER`:定义存储过程的所有者。 - `PROCEDURE SP_CrossTable(ygh1 varchar(100))`:创建一个名为`SP_...

    MySQL多种递归查询方法.docx

    虽然MySQL没有提供类似于Oracle的内置递归查询功能,但通过自定义函数、存储过程等手段,依然可以有效地实现递归查询的需求。 #### 三、其他MySQL相关知识点 除了递归查询之外,文章还提到了以下几个知识点: ###...

    MySQL分组排序功能

    DROP TABLE IF EXISTS heyf_t10; CREATE TABLE heyf_t10 ( empid INT, deptid INT, salary DECIMAL(10, 2) ); INSERT INTO heyf_t10 VALUES (1, 10, 5500.00), (2, 10, 4500.00), (3, 20, 1900.00), (4, 20, 4800...

    初步认识MySQL数据库

    MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),由MySQL AB公司创建,现归Oracle公司所有。它的设计目标是提供高效、可靠且易于管理的数据存储解决方案。MySQL以其简单易用、高性能、低成本和强大的SQL...

    MySQL实现类似Oracle序列的方案

    DROP TABLE IF EXISTS sequence; CREATE TABLE sequence ( seq_name VARCHAR(50) NOT NULL, -- 序列名称 current_val INT NOT NULL, -- 当前值 increment_val INT NOT NULL DEFAULT 1, -- 步长(跨度) PRIMARY ...

    mysql笔记一(mysql常用)

    9. **存储过程和函数**:MySQL支持用户定义的存储过程和函数,可以封装复杂的操作。 五、数据库操作 1. **创建数据库**:`CREATE DATABASE database_name;` 2. **选择数据库**:`USE database_name;` 3. **查看...

    初识MySQL的入门笔记

    删除数据表的命令是`DROP TABLE`,如果想确保表存在才删除,可以使用`DROP TABLE IF EXISTS`。例如,删除名为demo01的表可以写为`DROP TABLE IF EXISTS demo01;`。 总的来说,MySQL的学习涵盖了数据库的基本概念、...

    oracle+mysql常用命令汇总

    DROP DATABASE IF EXISTS 数据库名; ``` #### 表管理 18. **创建表**: ```sql CREATE TABLE 表名 ( 列名1 数据类型, 列名2 数据类型, ... ); ``` 19. **查看所有表**: ``` SHOW TABLES; ``` 20. **...

Global site tag (gtag.js) - Google Analytics