火星文 技术研习社

Noname Cat, Keep Thinking
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

使用 Navicat 8 给 MySQL 写存储过程的几点注意

Posted on 2009-11-08 07:29  剑廿三  阅读(2756)  评论(0编辑  收藏  举报

存储过程例子:

CREATE DEFINER=`root`@`localhost` PROCEDURE `test_new`(IN `vName` varchar(10))
BEGIN
    insert into test (Name,CreateTime) values (vName,now());
END

以下是注意事项:

1、DEFINER

DEFINER=`root`@`localhost` 这种声明在执行时是可以去掉的,尤其在手工迁移结构时更加应该去掉。如果利用 Navicat 8 复制数据库结构,那么后面的“用户”@“主机”这种命名一定要在两台主机上都要保持一致。通过 MySQL Administrator 或 Query Browser 或 MYSQL-FRONT 创建的表、视图、存储过程可能会有 `root`@`%` 这种命名。其实 % 就表示 localhost,但在 Navicat 里是识别不出的,所以还得通过 Navicat 创建一个用户,名叫做 root @ % ,这样复制结构时才会成功哦。

2、IN OUT 参数的字段长度

通过 Navicat 创建存储过程时,刚开始会让你填写一个输入输出参数表,可以填 IN/OUT/INOUT 类型、参数名字、数据类型,但不能填写字段长度。这在 MySQL 执行创建存储过程的命令时会出错,就因为没有填写字段长度,只要在编辑器的“定义”底部的“参数”栏里修改一下,把字段长度加上去就可以了。

3、参数名称最好不要与数据表的字段名称重合