以下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('表名'); 执行成功。
不知道以上原理是什么,如果有懂原理的大神看到,请指教。
分享到:
相关推荐
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 表名 ...; -- 直接写...
- Oracle使用`CREATE OR REPLACE PROCEDURE/FUNCTION`来创建或替换存储过程和函数,而MySQL则需要先使用`DROP PROCEDURE/FUNCTION IF EXISTS`删除已存在的同名对象,再创建新的。 - 在Oracle中,如果存在同名的...
在MySQL中,命令为`DROP PROCEDURE IF EXISTS [ProcedureName]`。这些命令会永久地从数据库中移除指定的存储过程。 5. **影响分析**:删除存储过程可能会影响到依赖于它的其他对象,如触发器、视图或应用程序代码。...
DROP PROCEDURE IF EXISTS proc_name; ``` 六、最佳实践 在使用存储过程时,应注意以下几点: 1. 尽可能减少嵌套层次,避免过于复杂的存储过程。 2. 为存储过程提供清晰的注释,方便维护。 3. 考虑性能,合理设计...
在MySQL数据库中,由于没有像Oracle的`CONNECT BY`那样直接支持树形遍历的语法,因此我们需要通过存储过程来实现这一功能。在多级别菜单栏或权限系统中,特别是涉及部门上下级关系时,树形结构的遍历至关重要。以下...
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 ...
- **DROPPROCEDURE IF EXISTS**: 检查是否存在同名的存储过程,如果存在则删除。 - **CREATE PROCEDURE**: 创建一个名为`HelloWorld`的存储过程,接受一个`VARCHAR(30)`类型的参数`str`。 - **SET @var**: 设置一个...
该方法是使用 MySQL 的存储过程来实现递归查询。首先,创建一个函数 `getChildLst`,该函数将返回一个由所有子节点号组成的字符串。该函数使用 WHILE 循环来递归地查找所有子节点,并使用 `FIND_IN_SET` 函数来判断...
- `DROP PROCEDURE IF EXISTS`:如果已存在名为`SP_CrossTable`的存储过程,则先删除。 - `CREATE DEFINER`:定义存储过程的所有者。 - `PROCEDURE SP_CrossTable(ygh1 varchar(100))`:创建一个名为`SP_...
虽然MySQL没有提供类似于Oracle的内置递归查询功能,但通过自定义函数、存储过程等手段,依然可以有效地实现递归查询的需求。 #### 三、其他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是一个广泛使用的开源关系型数据库管理系统(RDBMS),由MySQL AB公司创建,现归Oracle公司所有。它的设计目标是提供高效、可靠且易于管理的数据存储解决方案。MySQL以其简单易用、高性能、低成本和强大的SQL...
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 ...
9. **存储过程和函数**:MySQL支持用户定义的存储过程和函数,可以封装复杂的操作。 五、数据库操作 1. **创建数据库**:`CREATE DATABASE database_name;` 2. **选择数据库**:`USE database_name;` 3. **查看...
删除数据表的命令是`DROP TABLE`,如果想确保表存在才删除,可以使用`DROP TABLE IF EXISTS`。例如,删除名为demo01的表可以写为`DROP TABLE IF EXISTS demo01;`。 总的来说,MySQL的学习涵盖了数据库的基本概念、...
DROP DATABASE IF EXISTS 数据库名; ``` #### 表管理 18. **创建表**: ```sql CREATE TABLE 表名 ( 列名1 数据类型, 列名2 数据类型, ... ); ``` 19. **查看所有表**: ``` SHOW TABLES; ``` 20. **...
- **存储过程概念**:解释存储过程的作用及其在Oracle数据库中的实现方式。 - **创建存储过程**:教授如何使用CREATE PROCEDURE语句创建存储过程。 - **调用存储过程**:介绍如何在PL/SQL或SQL环境中调用存储过程。 ...