我在navicat中用命令界面创建存储过程和存储函数的时候中发现delimiter不起作用,但我在powershell和windows命令行中可以用delimiter,经过网上查询,发现navicat根本就不需要delimiter,它可以通过可视化界面选择创建存储过程和存储函数。下面将介绍两种在navicat中创建存储过程和存储函数的两种方法。
第二种方法就是通过navicat中的命令界面,但不需要用delimiter,直接在最后加入end; 即可。
下面举一个例子说
DELIMITER @@
CREATE PROCEDURE stu_info(IN name CHAR(8))
BEGIN
SELECT s.学号,姓名,课程编号,分数 FROM student s,grade g
WHERE s.学号=g.学号 and 姓名=name;
END @@
在powershell或windows命令行窗口中这样输入就是对的,但在navicat中需要改成下面的格式
CREATE PROCEDURE stu_info(IN name CHAR(8))
BEGIN
SELECT s.学号,姓名,课程编号,分数 FROM student s,grade g
WHERE s.学号=g.学号 and 姓名=name;
END ;
可以看到根本不需要delimiter,直接在最后end; 即可。
后日谈:第二种方法仅适用于复制粘贴,如果要一行一行输入仍会遇见问题,因为navicat命令行遇见“;”就会结束语句,所以建议还是采用第一种方法来创建存储过程和存储函数。
*********重要***************
后后日谈,我发现第二种方法是可以的,只需要再
SELECT s.学号,姓名,课程编号,分数 FROM student s,grade g
WHERE s.学号=g.学号 and 姓名=name;
这段语句结束时不按回车键,因为按回车会默认结束语句,此时会出错,这时需要按住shift+enter键来换行,再输入 end; 才可以,因为shift+end才是换行而不结束语句。