创建存储过程MySQL时出错

创建存储过程MySQL时出错,mysql,sql,database,stored-procedures,phpmyadmin,Mysql,Sql,Database,Stored Procedures,Phpmyadmin,我想使用phpmyadmin在MySQL数据库中创建一个存储过程 几分钟后,我在“创建过程”对话框中键入并按GO,我的语法出现错误 我在谷歌上搜索过哪一个是错误的,但仍然没有找到。请任何人给我一些建议如何解决这个问题 这是我的“MySQL”存储过程查询 DELIMITER $$ BEGIN IF cek=1 THEN SELECT a.NIK AS NIK , a.EmployeeName AS EmployeeName , a.Posit

我想使用phpmyadmin在MySQL数据库中创建一个存储过程

几分钟后,我在“创建过程”对话框中键入并按GO,我的语法出现错误

我在谷歌上搜索过哪一个是错误的,但仍然没有找到。请任何人给我一些建议如何解决这个问题

这是我的“MySQL”存储过程查询

DELIMITER $$
BEGIN
IF cek=1 THEN
    SELECT a.NIK AS NIK
            , a.EmployeeName AS EmployeeName
            , a.Position AS Position
            , b.TypeName AS EmployeeType
            , TIME(c.EventTime) AS Datang
            , (CASE WHEN a.TypeID=3 THEN 
                    (CASE WHEN TIME(c.EventTime)>(SELECT TimeIn FROM MST_Shift 
                    WHERE ShiftID=(SELECT ShiftID FROM SCH_Shifting WHERE NIK=a.NIK AND DATE(ShiftDate)=DATE(sdate)
                    AND IsActive=1 AND IsDeleted=0))
                    THEN 'Late' ELSE 'On Time' END)
              WHEN a.TypeID=1 OR a.TypeID=2 THEN
                    (CASE WHEN TIME(c.EventTime)>'08:15:00' THEN 'Late' ELSE 'On Time' END)
              WHEN a.TypeID=6 OR a.TypeID=7 THEN
                    (CASE WHEN TIME(c.EventTime)>(SELECT TimeIn FROM MST_Shift
                    WHERE TypeID=a.TypeID LIMIT 1) THEN 'Late' ELSE 'On Time' END)
              WHEN a.TypeID=5 THEN
                    (CASE WHEN TIME(c.EventTime)>(SELECT TimeIn FROM MST_Shift
                    WHERE ShiftID=(CASE WHEN DAYOFWEEK(sdate)=7 THEN 12 ELSE 11 END)) THEN 'Late' ELSE 'OnTime' END)
              WHEN a.TypeID=4 THEN
                    (CASE WHEN TIME(c.EventTime)>(SELECT TimeIn FROM SCH_Special
                    WHERE NIK=a.NIK AND DATE(AbsenceDate)=DATE(sdate) AND IsDeleted=0) THEN 'Late' ELSE 'OnTime' END)
              ELSE 'Undefined' END) AS Description
    FROM MST_Employee a
    INNER JOIN MST_EmployeeType b ON b.TypeID=a.TypeID
    INNER JOIN VW_AttendanceIN c ON a.NIK=c.NIK
    WHERE DATE(c.EventTime)=DATE(sdate)
    GROUP BY b.TypeName
            , a.Position
            , a.EmployeeName;
ELSE
    SELECT a.NIK AS NIK
            , a.EmployeeName AS EmployeeName
            , a.Position AS Posisi
            , b.TypeName AS Tipe
            , TIME(c.EventTime) AS Datang
            , (CASE WHEN a.TypeID=3 THEN 
                    (CASE WHEN TIME(c.EventTime)>(SELECT TimeIn FROM MST_Shift 
                    WHERE ShiftID=(SELECT ShiftID FROM SCH_Shifting WHERE NIK=a.NIK AND DATE(ShiftDate)=DATE(sdate)
                    AND IsActive=1 AND IsDeleted=0))
                    THEN 'Late' ELSE 'On Time' END)
              WHEN a.TypeID=1 OR a.TypeID=2 THEN
                    (CASE WHEN TIME(c.EventTime)>'08:15:00' THEN 'Late' ELSE 'On Time' END)
              WHEN a.TypeID=6 OR a.TypeID=7 THEN
                    (CASE WHEN TIME(c.EventTime)>(SELECT TimeIn FROM MST_Shift
                    WHERE TypeID=a.TypeID LIMIT 1) THEN 'Late' ELSE 'On Time' END)
              WHEN a.TypeID=5 THEN
                    (CASE WHEN TIME(c.EventTime)>(SELECT TimeIn FROM MST_Shift
                    WHERE ShiftID=(CASE WHEN DAYOFWEEK(sdate)=7 THEN 12 ELSE 11 END)) THEN 'Late' ELSE 'OnTime' END)
              WHEN a.TypeID=4 THEN
                    (CASE WHEN TIME(c.EventTime)>(SELECT TimeIn FROM SCH_Special
                    WHERE NIK=a.NIK AND DATE(AbsenceDate)=DATE(sdate) AND IsDeleted=0) THEN 'Late' ELSE 'OnTime' END)
              ELSE 'Undefined' END) AS Description
    FROM MST_Employee a
    INNER JOIN MST_EmployeeType b ON b.TypeID=a.TypeID
    INNER JOIN VW_AttendanceIN c ON a.NIK=c.NIK
    WHERE DATE(c.EventTime)=DATE(sdate)
    AND b.TypeID=type
    AND (a.NIK LIKE '%'+search+'%' OR a.EmployeeName LIKE '%'+key+'%')
    GROUP BY b.TypeName
            , a.Position
            , a.EmployeeName;
END IF;
END$$
我犯了这样的错误

处理您的请求:

以下查询失败:“创建定义器=
root
@
%
过程
USP\u selectAttention
(在
cek
BIT(1)、在
type
INT、在
sdate
DATETIME、在
search
VARCHAR(100))中)不包含SQL安全定义器

MySQL说:#1064-您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以了解在“$$BEGIN IF cek=1”附近使用的正确语法,然后在第1行选择a.NIK作为NIK,a.EmployeeName作为”

此外,当我在SQL中运行“SELECT”查询时,它可以正常工作

错误出现在存储过程创建中

附言:我为糟糕的英语感到抱歉改变:

。。。
和(类似“%”+搜索+“%”的.NIK或类似“%”+键+“%”的.EmployeeName)
...
作者:

。。。
和(a.NIK类CONCAT(“%”,search,“%”)或a.EmployeeName类CONCAT(“%”,key`,“%”)
...

如果您收到语法错误消息,请在这里发布。迈克W:我已经发布了错误消息