navicat中delimiter不起作用以及在navicat中创建存储过程和存储函数的两种方法

我在navicat中用命令界面创建存储过程和存储函数的时候中发现delimiter不起作用,但我在powershell和windows命令行中可以用delimiter,经过网上查询,发现navicat根本就不需要delimiter,它可以通过可视化界面选择创建存储过程和存储函数。下面将介绍两种在navicat中创建存储过程和存储函数的两种方法。

第一种方法就是通过navicat可视化界面选择创建。这里不介绍,参考使用navicat创建mysql储存过程icon-default.png?t=N7T8https://blog.csdn.net/qq_45317281/article/details/129295657?ops_request_misc=&request_id=&biz_id=102&utm_term=navicat%E5%88%9B%E5%BB%BA%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B%E5%92%8C%E5%AD%98%E5%82%A8%E5%87%BD%E6%95%B0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-129295657.142%5Ev96%5Epc_search_result_base7&spm=1018.2226.3001.4187

 第二种方法就是通过navicat中的命令界面,但不需要用delimiter,直接在最后加入end; 即可。

下面举一个例子说

输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名的学生的各科成绩。

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才是换行而不结束语句。

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值