2016-06-27 3 views
0

ストアドプロシージャの学習で、SQLの新機能です。ストアドプロシージャの実行中に 'トークンが不明'というエラーが表示される

自動データから値を計算で挿入するストアドプロシージャを作成したいとします。

Attendance

EMPL_KODE |EMPL_NAME |DATE_IN |TIME_IN |TIME_OUT|TIME_IN |TIME_OUT 
001  | Michel |25.04.2016 |06:50 |15:40 |  | 
002  | Clara  |25.04.2016 |06:15 |15:43 |  | 
003  | Rafael |25.04.2016 |06:25 |15:45 |  | 
001  | Michel |26.04.2016 |06:23 |15:42 |  | 
002  | Clara  |26.04.2016 |06:10 |15:41 |  | 
003  | Rafael |26.04.2016 |06:30 |15:42 |  | 
001  | Michel |27.04.2016 |06:33 |15:42 |  | 
002  | Clara  |27.04.2016 |06:54 |15:44 |  | 
003  | Rafael |27.04.2016 |07:00 |15:45 |  | 

私は、ストアドプロシージャを作成することにより、自動的にTIME_INTIME_OUT値を記入します。ここでは、コードは次のようになります。

CREATE PROCEDURE InsertTotalEmployee 
    @TOTAL_MINUTES int, 
    @TOTAL_HOURS float 
AS 
BEGIN 
    INSERT INTO ATTENDANCE (TOTAL_MINUTES, TOTAL_HOURS) 
    VALUES (
     SELECT 
      DATEDIFF(MINUTE, ATTENDANCE.TIME_IN, ATTENDANCE.TIME_OUT), 
      DATEDIFF(MINUTE, ATTENDANCE.TIME_IN, ATTENDANCE.TIME_OUT)/60.0 
    ) 
END 

私が書くと私の文を実行した後、メッセージのエラーが発生します。

トークン不明 - ライン2、

@列5は、私は、コードを実行しますFlamerobinを使用します。

+0

また、一貫したタイプミスがあります。**出席**です(綴りを続けていると「忠実」ではありません)。 –

+1

@marc_s私は間違って申し訳ありません。思い出していただきありがとうございます。 –

答えて

1

FirebirdでMicrosoft SQL Server構文を使用しようとしているようですが、それは動作しません。

1つの場合、識別子のように@は許可されません(二重引用符を使用しない限り)。パラメータのリストは括弧で囲む必要があります。

CREATE PROCEDUREの構文を参照してください。あなたはそれを変更する必要があります。

CREATE PROCEDURE InsertTotalEmployee(TOTAL_MINUTES int, TOTAL_HOURS float) 

ます。またfloatdouble precisionにデータ型を変更したい場合があります、そして、あなたのストアドプロシージャの体はあなたが何から選択されているので、不完全であると思われるが(selectがにテーブルを必要とし から選択)、ステートメントの最後にセミコロンがありません。

まったく私はあなたがFirebird language referenceを勉強し、機能している挿入を作成しようとすると、その周りにストアドプロシージャを作成することをお勧めします。

はまた、あなたがset termを使用して文の終了を切り替えなければならないこと、Flamerobinにストアドプロシージャを作成するときにそうFlamerobinもProcedural SQL (PSQL) Statementsの最初のセクションを参照して、ストアドプロシージャを正しく送信することはできませんのでご注意します。

+0

私に説明してくれてありがとう。しかし、私はまだ入力と出力のパラメータについて混乱しています。変数の宣言についても。 –

+0

[documentation](http://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-psql.html)で説明されています。それ以外の場合は、新しい具体的な質問をする必要があります。 –

関連する問題