2011-02-23 5 views
0

을 저장 만들기 나는 다음과 같은 SP오류 -104 파이어 버드는 절차

CREATE PROCEDURE SP_NYANSAT(
     FORNAVN VARCHAR(30), 
     EFTERNAVN VARCHAR(30), 
     ADRESSE VARCHAR(50), 
     POSTNUMMER CHAR(4), 
     TELEFONNUMMER CHAR(8), 
     EMAIL VARCHAR(50)) 
    AS 
    DECLARE VARIABLE ID INTEGER; 
    BEGIN 
     ID = GEN_ID(GEN_ANSAT_ID,1); 
     INSERT INTO MYTABLE (ID, FORNAVN, EFTERNAVN, ADRESSE, POSTNUMMER, TELEFONNUMMER, EMAIL) VALUES (:ID, :FORNAVN, :EFTERNAVN, :ADRESSE, :POSTNUMMER, :TELEFONNUMMER, :EMAIL); 
    END 

나는 다음과 같다 얻을 오류 실행할 수 없습니다 :

can't format message 13:896 -- message file C:\Windows\firebird.msg not found. 
Dynamic SQL Error. 
SQL error code = -104. 
Token unknown - line 3, column 1. 
CREATE. 

답변

4

가 이전에 설정 용어 사용이 코드 후이 있으?

Firebird의 모든 명령은 세미콜론으로 끝나야합니다. 저장 프로 시저를 만들려면 저장 프로 시저 내부의 세미콜론에서 종료 세미콜론을 구별 할 수 있어야합니다. 이 같은

뭔가 :

SET TERM^; 

CREATE PROCEDURE SP_NYANSAT(
     FORNAVN VARCHAR(30), 
     EFTERNAVN VARCHAR(30), 
     ADRESSE VARCHAR(50), 
     POSTNUMMER CHAR(4), 
     TELEFONNUMMER CHAR(8), 
     EMAIL VARCHAR(50)) 
    AS 
    DECLARE VARIABLE ID INTEGER; 
    BEGIN 
     ID = GEN_ID(GEN_ANSAT_ID,1); 
     INSERT INTO MYTABLE (ID, FORNAVN, EFTERNAVN, ADRESSE, POSTNUMMER, TELEFONNUMMER, EMAIL) VALUES (:ID, :FORNAVN, :EFTERNAVN, :ADRESSE, :POSTNUMMER, :TELEFONNUMMER, :EMAIL); 
    END 
    ^

SET TERM ;^

저장 프로 시저의 선언은 이렇게 문을 종료^종료하는 방법을주의하시기 바랍니다. 선언 후에도 종료되는 세미콜론을 복원합니다.

사이드 노트에서 firebird.msg를 위치에 복사하는 것이 좋습니다. 오류가 발생하면 실제로 발생한 상황을 볼 수 있습니다.

편집 :

당신이 link을 확인할 수 있습니다하고자하는 경우. 여기서 SET TERM (81 페이지)을 포함하여 Firebird + IBExpress와 관련된 많은 정보를 찾을 수 있습니다.

편집 2 :

그냥 IBExperts + 파이어 버드와 함께 집에서 시도하고 내가 저장 프로 시저를 만드는 아무 문제가 없었다. 내 생각 엔 다음 중 하나를 수행하려고합니다.

  • SQL 편집기를 열고 코드를 직접 컴파일하려고합니다. IBExperts가 DSQL 문장을 실행하려고한다고 생각하기 때문에 작동하지 않습니다. 저장 프로 시저는 PSQL 문장으로 생성됩니다.

  • "새 프로 시저"유틸리티 (주 메뉴의 오른쪽 상단에있는 확인 버튼)를 사용하여 전체 코드를 편집기에 붙여 넣으려고합니다. 그 에디터에서는 본문 코드 만 넣으면되기 때문에 작동하지 않습니다. 저장 프로 시저 이름은 열어 본 창의 오른쪽 위 필드에 설정됩니다. 매개 변수 및 변수는 코드 편집기의 왼쪽에있는 "매개 변수/변수 삽입"버튼을 사용하여 소개합니다. SET TERM 문장은 IBExperts에 의해 자동 생성됩니다. DDL 탭에서 결과 코드를 확인할 수 있습니다.

HTH 나는 다음과 같은 오류 얻을 그와

+0

: 잘못된 토큰. 동적 SQL 오류입니다. SQL 오류 코드 = -104. 토큰 알 수 없음 - 3 행 1 열 SET. – Herter

+0

SP를 만들 때 어떤 도구를 사용하고 있습니까? isql 또는 다른 것입니까? SET TERM은 내가 아는 한 Firebird에만 해당되므로 SP를 작성하는 데 사용하는 구성 요소 나 도구가 무엇이든이를 인식 할 수 있어야합니다. –

+0

나는 정확히 그대로 코드를 복사했습니다. IBExpert를 사용하여 절차를 만들었습니다. 아마도 그것을 이해하지 못하는 IBExpert입니까? – Herter