2 tianzhaoai tianzhaoai 于 2015.06.18 00:47 提问

用MySql的Navicat创建存储过程总是报1458错误

下面是我穿件存储过程的代码。求大神帮忙看看。真心很急,明天就要用。

 create procedure searchStudentGrade(in id char)
 begin
     if id is null
         select  student.StudentID,student.StudentName,student.ClassNumber,grade.ExamID,course.CourseName,grade.Grade,course.CourseID
        from student,grade,course
        where student.StudentID=grade.StudentID and grade.CourseID=course.CourseID;
    else
        select student.StudentID,student.StudentName,student.ClassNumber,grade.ExamID,course.CourseName,grade.Grade,course.CourseID
        from student,grade,course
        where student.StudentID=grade.StudentID and grade.CourseID=course.CourseID and grade.StudentID=id;
    end if;
end;

2个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.06.18 01:06
已采纳
 create procedure searchStudentGrade(in id char)
 begin
     if id is null then 这里少了一个then吧
         select  student.StudentID,student.StudentName,student.ClassNumber,grade.ExamID,course.CourseName,grade.Grade,course.CourseID
        from student,grade,course
        where student.StudentID=grade.StudentID and grade.CourseID=course.CourseID;
    else
        select student.StudentID,student.StudentName,student.ClassNumber,grade.ExamID,course.CourseName,grade.Grade,course.CourseID
        from student,grade,course
        where student.StudentID=grade.StudentID and grade.CourseID=course.CourseID and grade.StudentID=id;
    end if;
end;
tianzhaoai
tianzhaoai 回复Code丶Robot: 谢谢大神啦。。
大约 3 年之前 回复
tianzhaoai
tianzhaoai 回复danielinbiti: 这样写还是不对,
大约 3 年之前 回复
tianzhaoai
tianzhaoai 回复danielinbiti: 这样写还是不对,
大约 3 年之前 回复
tianzhaoai
tianzhaoai 回复danielinbiti: 这样写还是不对,
大约 3 年之前 回复
tianzhaoai
tianzhaoai 回复danielinbiti: 这样写还是不对,
大约 3 年之前 回复
tianzhaoai
tianzhaoai 回复danielinbiti: 大神有时间没。有时间的话能不能Code一下啊。谢谢啦。看了那个动态拼接。真心是醉了。。
大约 3 年之前 回复
danielinbiti
danielinbiti 回复Code丶Robot: grade.StudentID=id,id不是字段是变量,这么写是有问题的。动态拼接执行,http://www.linuxidc.com/Linux/2011-08/40597.htm
大约 3 年之前 回复
tianzhaoai
tianzhaoai 保存的时候回报1064错误
大约 3 年之前 回复
tianzhaoai
tianzhaoai 加了。还是不行。
大约 3 年之前 回复
ycg514230
ycg514230   Rxr 2015.06.18 08:20

还有那里不对?报什么错?

tianzhaoai
tianzhaoai 好了、后来开了一下动态拼接,这个用动态拼接才可以的。谢谢啦。
大约 3 年之前 回复
tianzhaoai
tianzhaoai 好了、后来开了一下动态拼接,这个用动态拼接才可以的。谢谢啦。
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
navicat for mysql 创建存储过程时报错1064
在navicat for mysql 创建函数,保存的时候出现1064错误 基本上是两个原因导致的: 1:是存储过程的参数没有设定长度导致的,我们在Navicat中创建存储过程时参数的长度需要自己动手去添加的否则就会包这种错误。 添加上参数的长度之后在保存就不会出错了。 2:如果参数没问题,检查下自己的sql代码,基本上就是代码的语法错误导致的。
Mysql创建存储过程时出现ERROR 1064错误
ERROR 1064 (42000):ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE i INT DEFAULT 0'
使用Navicat for MySQL创建存储过程
1.打开navicat选择要创建存储过程的数据库,右击函数,创建。 2.添加所要输入的参数,选择模式和类型(!这里并没有默认提供大小)。 3.输入存储过程的定义语句。 4.保存,输入存储过程的名字。 !注意:保存中会出现如此错误,是因为创建时系统并没有提供大小(例如varchar类型),需要自己输入大小,否则保存不成功。 5.保存成功。 6.输入参数,执行存储过程。 之前写过,
mysql创建存储过程时ERROR 1064 (42000)的解决办法
转载自:http://blog.chinaunix.net/uid-20263484-id-110165.html 郁闷了我半天,才发现mysql自作聪明的把;看成是procedure的结束符了,于是procedure便解析失败了。 在声明存储过程之前声明//为结束符 DELIMITER // 然后以//结束存储过程就好了 以前写存储过程/函数这些都是在windows下写的,才没
使用navicat的命令行模式创建修改表和存储过程
1.创建函数语法  mysql>delimiter //  mysql>create function 函数名(参数1 参数1类型,...) returns 返回类型       >begin    >return 返回值;    >end    >//  mysql>select 函数名(参数1, 参数2, 。。。);    >//
navicat 创建存储过程
navicat创建存储过程图解
mysql 创建存储过程报错
mysql5以上的版本都支持存储过程 我先创建了一张表: create table tb_user ( user_id int primary key, user_name varchar(20) not null ); 默认情况下,创建存储过程会报错,如下: mysql> create procedure pr_gen_users() -> begin
navicat创建mysql 数据库存储过程
 1.点开数据库testdb,找到函数,右击--》新建函数--》选择存储过程     2.有个表格,每一行描述一个存过的入参或存过的返回值;每行的第一个框,in,out,inout三个选项可选,in代表是入参,out代表返 回值;中间是变量名,随便起,别和关键字冲突;第三个框表示这行变量的类型,这和函数的入参返回值是一致的。如果有多个点击左下角 的+号,删掉点击-号。     3.点
MySQL存储过程和自定义函数、Navicat、创建存储过程和函数、调用存储过程和函数、三种方式、In和Out类型参数、
MySQL存储过程和函数过程和函数,它们被编译后保存在数据库中,称为持久性存储模块(Persistent Stored Module,PSM),可以反复调用,运行速度快。1.1 存储过程存储过程是由过程化 SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,因此称它为存储过程,使用时只要调用
NAVICAT如何创建存储过程
再简单的东西长时间不用了就会出错,特此即时的记录下来,以便以后参考! 以下为navicat 创建存储过程步骤图解: 1. 2. 3. 4.在存储过程正文中是输入一行语句测试用,点击保存 5.输入存储过程名称,点击确定 6.到这来那么问题来了,会提示错误 7.切记存储过程的参数