MySQL 저장 절차
-
08-07-2019 - |
문제
MS SQL 서버 배경에서 왔습니다. Navicat 8 관리자 도구와 함께 MySQL을 사용하여 새로운 프로젝트 작업. 좋아요, 여기 질문이 있습니다. 일반적으로 MS Land에서 작업 할 때 일부 데이터를 업데이트하려면 저장 프로 시저를 사용하여 다음을 수행합니다.
Drop Procedure spNew
Create Procedure spNew (@P_Param)
UPDATE Table
SET Field = 'some value'
WHERE ID = @P_Param
나는 Navicat 내에서 동일한 논리를하려고합니다. 매개 변수를 정의했습니다. (IN '@P_Param' int)
내가 배치 한 정의에서 :
BEGIN
UPDATE Table
SET Field = 'some value'
WHERE ID = @P_Param
END;
저장된 절차를 저장하려고 할 때이 오류가 발생합니다. "1064- SQL 구문, blah, blah, blah에 오류가 있습니다."
누구든지 적어도 나를 올바른 방향으로 가리킬 수 있습니까?
감사.
해결책
CREATE PROCEDURE spNew(P_Param INT)
BEGIN
UPDATE Table
SET Field = 'some value'
WHERE ID = P_Param;
END;
주목하십시오 MySQL
구문과 전반적인 이데올로기는 다음과 같습니다 매우 그것과 다릅니다 SQL Server
.
구분기를 설정해야 할 수도 있습니다.
DELIMITER $$
CREATE PROCEDURE spNew(P_Param INT)
BEGIN
UPDATE Table
SET Field = 'some value'
WHERE ID = P_Param;
END;
$$
DELIMITER ;
btw, 나는 당신이 실제로 당신의 테이블에 전화하지 않는다고 가정하고 있습니다. "Table"
, 그것은 예약 된 단어이기 때문에.
그렇게한다면 이와 같이 백 티크에 넣어야합니다.
DELIMITER $$
CREATE PROCEDURE spNew(P_Param INT)
BEGIN
UPDATE `Table`
SET `Field` = 'some value'
WHERE `ID` = P_Param;
END;
$$
DELIMITER ;
다른 팁
MySQL 저장된 절차에 대한 매개 변수는 @로 접두사 또는 선언 또는 사용시 인용되지 않습니다. 그러나 로컬 변수는 @로 접두사입니다.
노력하다:
DROP PROCEDURE IF EXISTS spNew;
CREATE PROCEDURE spNew(IN P_Param INT)
BEGIN
UPDATE Table
SET Field = 'some value'
WHERE ID = P_Param
END;
제휴하지 않습니다 StackOverflow