2013-02-04 3 views
4

환경에 매우 새로운 점으로, 코드 끝에 추가 된 행에 대한 질문이 있습니다. 내가 소식 가이드는 다음과 같습니다 사람이 MySQL을 저장 프로 시저에 대한 더 나은 하나를 가지고MySQL 워크 벤치를 사용하는 저장 프로 시저

http://net.tutsplus.com/tutorials/an-introduction-to-stored-procedures/

경우, 나는 모든 귀 해요. OS :

내가하기 전에,이 내가 사용 환경은 윈도우 7/WAMP (MySQL은 5.5.24) 나는 구분 기호를 정의하도록 지시하고 있습니다

/MySQL의 워크 벤치; 내 경우에는 기본 '$$'을 고수하고있다.

내가 만든 저장 프로 시저가있다 :이 저장 프로 시저를 적용하고 난 검토 화면을 얻을 때

DELIMITER $$ 
CREATE PROCEDURE test.`p2`() 
LANGUAGE SQL 
DETERMINISTIC 
COMMENT 'Adds "nson" to first and last names in the record.' 
BEGIN 
SELECT 'Hello World'; 
END $$ 

, 나는 코드의 새로운 라인을 참조 추가; 하단

는 :

DELIMITER ; 

이 라인 라트; DELIMITER 문은 정의 된 구분 기호 ($$)를 사용할 수있는 블록을 선언하고 결국 블록을 닫기 때문에 추가됩니까? (예 : 그 명령이 엄격 저장 프로 시저 구문 관련이없는

USE `test`; // <---------- 
DROP procedure IF EXISTS `p2`; // <---------- 

DELIMITER $$ 
USE `test`$$ // <---------- 
CREATE PROCEDURE test.`p2`() 
LANGUAGE SQL 
DETERMINISTIC 
COMMENT 'Adds "nson" to first and last names in the record.' 
BEGIN 
SELECT 'Hello World'; 
END $$ 

DELIMITER ; // <---------- 

, 그들은 단지 상품 - 다른 MySQL의 클라이언트를 위치 :

답변

2

내장 프로 시저 편집기를 사용하여 MySQL의 워크 벤치는 몇 가지 추가 명령을 추가 HeidiSQL 또는 공식 커맨드 라인 유틸리티)는이를 추가하지 않습니다. 마지막 구분 기호 변경은 같은 연결의 향후 명령문에서 문제를 피하기 위해 재설정 된 것일 수 있습니다.

당신은 프로 시저 코드는 시작과 끝 위치에 대한 클라이언트를 지시하기 위해 구분 기호를 변경해야합니다.

CREATE PROCEDURE test.`p2`() 
LANGUAGE SQL 
DETERMINISTIC 
COMMENT 'Adds "nson" to first and last names in the record.' 
BEGIN 
SELECT 'Hello World'; 

으로 : 문제는 프로 시저 본문이 너무이 될 것이다 처음있는 MySQL은 당신이 일련의 명령문을 실행하려는 생각 할 것 구분 기호의 변화를 생략 SQL 문 모음이 정상적으로 때문이다 DELIMITER $$ 당신은 완전한 진술이 CREATE에서 END으로가는 것을 MySQL에 알리고 있습니다. 그것은 단지 문법적 설탕입니다 : DELIMITER은 SQL 키워드조차 아닙니다. 예를 들어, HeidiSQL은 GUI에 절차 본문을 작성하는 텍스트 상자를 제공하므로 DELIMITER 대안이 필요하지 않습니다.

+1

내 가정 Alvaro를 확인해 주셔서 감사합니다. – brooklynsweb

+0

초보자가 처음부터 튜토리얼을 찾고있는 경우를 위해 MYSQL WOrkbench에서 SP에 대한 유용한 자습서를보실 수 있습니다 : https://www.youtube.com/watch?v=WdievoP6570 –