2009-09-20 3 views
-1

안녕을 구현하면서 내가 MySQL의에서 다음 코드를 실행하는 동안 오류 받고 있어요오류 SQL 나무

# 1064 - 당신은 오류가 귀하의 SQL 구문; 귀하의 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오. 올바른 구문이 2 행에서 'DECLARE right_most_sibling INTEGER'근처에서 사용됩니다.

어떤 아이디어로 해결할 수 있습니까?

난 당신이 저장 프로 시저 헤더를 선언하지 않고, 저장 프로 시저 구문을 사용하고있는 것 같습니다이 tutorial

+0

줄 끝 세미콜론에 대해 불평하고 있습니까? –

+0

세미콜론이 있든 없든 똑같은 말입니다. – ant

+0

더 작은 것으로 시작해보십시오. 단 하나의 명령문 (예 : DECLARE 문); 그런 다음 문장을 추가하십시오. 그러면 오류를 일으키는 부분을 식별하는 데 도움이됩니다. – ChrisW

답변

1

을 다음되었다.

DECLARE은 저장 프로 시저 본문의 복합 문에 포함되어 있지 않으면 사용할 수 없습니다.

http://dev.mysql.com/doc/refman/5.1/en/declare.html는 말한다 :

DECLARE는 단지 BEGIN ... END 복합 문 내부에 허용 ...

http://dev.mysql.com/doc/refman/5.1/en/begin-end.html는 말한다 :

는 BEGIN ... END 구문은 복합어 문 작성에 사용되며 은 저장된 프로그램에 나타납니다.

자습서는 Joe Celko가 작성했으며, Oracle 또는 IBM DB2에서 작동하는 코드를 작성한다고 가정합니다. 그는 예제 코드로 MySQL을 사용하지는 않을 것입니다. 내가 실행하지 않을거야 때문에,

DELIMITER // 
CREATE PROCEDURE insert_new_node() 
BEGIN 
DECLARE right_most_sibling INTEGER; 
. . . 
END// 
DELIMITER ; 

내가 절차를 테스트하지 않았습니다 : 귀하의 코멘트를 다시


, 나는 적어도 프로 시저 내에서 블록을 선언 구문을 받아 그것을 가지고 전체 자습서를 통해

+0

위의 코드는 위의 코드입니다. Joe Celko가 작성한 코드를 붙여 넣은 링크에서 가져온 것입니다.이 코드를 수정하는 방법을 알려 주실 수 있습니까? 이것이 내가 원하는 것입니다. 단지 go ... – ant

2

코드를 복사/붙여 넣으려고하지 마십시오. &을 읽고 개념을 이해 한 다음 특정 문제에 사용하십시오.

이전 질문에 대한 답으로 나는 PHP 레벨에서이 항목을 구현하는 방법을 보여주는 두 번째 링크를 편집하고 추가했습니다 (PHP를 사용하고 있기 때문에).

빌 (Bill)이 말했듯이 셀 킨코 (Celko)의 장점은 무엇이 진행되고 있는지에 대한 생각없이 mySQL에 드롭 할 수는 없을 것입니다.

첫 번째은 개념을 이해합니다. 다음 직접 빌드를 구현하십시오.

+0

개념이 무엇을 의미하는지 확실하지 않습니다. , 만약 내가 이진 트리 개념을 이해하지 못한다고 생각한다면 나는 그렇지 않다는 것을 확신한다. 반면에 당신이 "mysql 구문"을 의미한다면 당신은 옳습니다. SELECT, UPDATE, DELETE를 사용하기 전에 mysql을 사용하여 if/else/whatever와 작업하는 것은 이번이 처음입니다. 게시 시간과 노력에 다시 한 번 감사드립니다. – ant

+0

다른 유용한 링크를 찾았습니다. http://dev.mysql.com/tech-resources/articles/hierarchical-data.html -> 사실 내 요구 사항에 가장 가까운, 내 문제를 해결하기 위해 사용하고 있습니다. – ant

+0

중첩 된 개념을 얻은 다음 그 개념을 실행하는 것이 무엇을 의미합니까? 조건문 (IF/ELSE)을 SQL에 고수하는 것에 대해 걱정하지 마십시오. 중첩 된 설정에 대한 좋은 점은 매우 효율적인 몇 가지 쿼리를 사용하면 모든 중요한 작업을 완료 할 수 있다는 것입니다. 이러한 작업을 저장 프로 시저로 구현하는 데는 아무런 문제가 없습니다. 일반적으로이를 수행하는 가장 좋은 방법입니다. 하지만 PHP에서 먼저 로직을 구현하는 것을 막을 수는 없으며 나중에 최적화하는 것에 대해 걱정할 필요가 없습니다. – timdev