phpmyadmin을 사용하여 MySQL 데이터베이스에 저장 프로 시저를 만들려고합니다.ERROR 저장 프로 시저 만들기 MySQL
몇 분 후에 "절차 만들기"대화 상자에 입력하고 GO를 누르면 구문에 오류가 있습니다.
Google에서 잘못된 정보를 검색했지만 여전히 찾을 수 없습니다. 아무도 내게이 문제를 해결하는 방법에 대한 조언을 좀주세요.
이것은 내 'MySQL'저장 프로 시저 쿼리입니다.
다음 쿼리는 실패: "DEFINER을 만들 =
root
@%
절차USP_SelectAttendance
(cek
BIT (1), IN INDELIMITER $$ 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$$
내가 요청을 처리하는이
같은 오류가 발생했습니다
type
INT, INsdate
DATETIME,search
VARCHAR (100) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER .......MySQL은 말했다 : # 1064 - SQL 구문에 오류가 있습니다; 라인 1
또한
에 가까운 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인 'CEK = 1 THEN AS NIK, a.EmployeeName AS a.NIK을 선택하면 BEGIN $$' 'SELECT'쿼리는 SQL로 실행할 때 잘 작동합니다.
저장 프로 시저 생성시 오류가 발생했습니다.
PS : 미안 해요 나쁜 영어
, 포스트 여기에. –
Mike W : 오류 메시지를 게시했습니다. – christ2702