DELIMITER //
-- 这个地方:因为怕有SP重名现象,所以我create sp之前.怎么检测sp是否存在,如果存在则select 'output message ' 并且不执行下面的create sp语句.
CREATE PROCEDURE XX()
BEGIN
SELECT 'AAA' AS message;
END//
DELIMITER ;
重点是如果存在则select 'output message ' 并且不执行下面的create sp语句.
-- 这个地方:因为怕有SP重名现象,所以我create sp之前.怎么检测sp是否存在,如果存在则select 'output message ' 并且不执行下面的create sp语句.
CREATE PROCEDURE XX()
BEGIN
SELECT 'AAA' AS message;
END//
DELIMITER ;
重点是如果存在则select 'output message ' 并且不执行下面的create sp语句.
解决方案 »
- 求助,mysql里面看不到用户信息的数据库了,在线等
- mysql 二进制日志 无法开启
- 如何导出root帐号下的多个数据库?在线等,可行后立马结帖给分!
- mysql中加密算法的问题,发现MD5是单次加密算法,加密以后的信息不可以解密,还有其他的算法吗?
- mysql5.0在IE浏览器中乱码显示问题,望有关高手帮助解决!
- winmysqladmin.exe报错
- 我犯了一个低级的错误,帮帮忙好么?
- inodb没全文索引的查询效率问题
- MySql查询首次出现在某一天的用户
- 求一条mysql语句删除表里字段重复的数据,只保留1条
- 请教两条MYSQL语句(解决问题立即结贴)
- Mysql 存储过程使用Cast()
+------+------+-----------+----------------+---------------------+--------------
-------+---------------+---------+----------------------+----------------------+
--------------------+
| Db | Name | Type | Definer | Modified | Created
| Security_type | Comment | character_set_client | collation_connection |
Database Collation |
+------+------+-----------+----------------+---------------------+--------------
-------+---------------+---------+----------------------+----------------------+
--------------------+
| csdn | XX | PROCEDURE | root@localhost | 2010-06-24 10:49:20 | 2010-06-24 10
:49:20 | DEFINER | | latin1 | latin1_swedish_ci |
latin1_swedish_ci |
+------+------+-----------+----------------+---------------------+--------------
-------+---------------+---------+----------------------+----------------------+
--------------------+
1 row in set (0.04 sec)mysql>
你可以先 drop procedure if exists spname 不管在不在都删除后创建新的。mysql> drop procedure if exists BB;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql>
也可以通过查询系统表来判断是否存在这个存储过程。mysql> select name from mysql.proc where name='XX';
+------+
| name |
+------+
| XX |
+------+
1 row in set (0.42 sec)mysql>
我要把这个SP放到别的mysql的database里面去.而我并不知道别人的database里面是否有跟我一样同名的SP,如果我冒然前面加drop procedure if exists spname 会删除别人的SP
所以我要在create SP的时候在前面判断一下..如果有同名的。这不创建自己的SP。。然后就人为的干预了
请斑竹明示··
能在前面加个语句判断,不用mysql的错误提示吗?
CREATE PROCEDURE B()
BEGIN
IF EXISTS (SELECT 1 FROM mysql.proc WHERE name ='XX') THEN
SELECT 'already exists';
ELSE
PREPARE stmt FROM 'CREATE PROCEDURE XX() SELECT 1 AS message';
EXECUTE stmt;
END IF;
END ;
在存储过程里面再创建存储过程,是不行的。
我的代码执行失败。