2011-02-02 29 views
4

私は1行のクエリがあります。Firebird 2.5で変数を宣言できないのはなぜですか?

DECLARE VARIABLE var_SecondsOfTime INTEGER; 

しかし、クエリを実行した後、私はこのメッセージを取得しています:

エンジンエラー(コード= 335544569): 動的SQLエラーを。 SQLエラーコード= -104トークンが不明 - 行1、列9。可変です。

SQLエラー(コード= -104):無効な トークン。

私は、インターネット上のあらゆる場所と、私が使用しているのと同じ宣言スタイルを示すすべての例を見ました。

どうしたのですか?私は空のブロックを実行することはできませんかなり確信しているので、試してください選択を発行

set term^; 

EXECUTE BLOCK 
AS 
    DECLARE VARIABLE var_SecondsOfTime INTEGER; 

BEGIN 
    SELECT 1 from RDB$DATABASE into var_SecondsOfTime ; 
END 
^ 

set term^; 

+0

あなたはどこで変数を宣言していますか?ストアドプロシージャ、またはどこですか? あなたのコードはどこから実行されていますか?他の? – jachguate

+0

@jachguate:FirebirdMaestroアプリケーションで実行される単純なクエリで宣言しています。私はそれがisql経由でDBに接続すると思います。私が言ったように、それは1行のクエリです。ストアドプロシージャはありません。コードのこの行。 – Wodzu

答えて

4

のFirebird 2.5は、これを試して、execute blockの文に囲まれたコードブロックの実行をサポートしていますこれを自分で選択して削除します。

isql running the block

編集 私のオリジナルの選択は、ブロックの無効だった、私は結果を収集するためにWHERE句に追加されます。私はファイヤーバードのマエストロを使ったことはありませんでしたが、isqlについては完全に動作するようになりました。

+0

ありがとう、あなたのコードを実行した後のエラーは次のとおりです:エンジンエラー(コード= 335544569): 動的SQLエラー。 SQLエラーコード= -104。 トークンが不明 - 1行目、1列目。 END。 SQLエラー(コード= -104): トークンが無効です。おそらく、Firebird Maestroに何か問題がありますか? – Wodzu

+0

@Wodzuブロックにinto節がありませんでした。私は個人的にファイヤーバードマエストロを使用したことがないので、別のターミネータが必要かどうかは分かりません。 – jachguate

+0

あなたのintereestありがとう、私はすぐにあなたの更新された答えを確認し、それが働いた場合にお知らせします。 – Wodzu

3

これを試してみてください:

set term^; 

EXECUTE BLOCK 
AS 
    DECLARE VARIABLE var_SecondsOfTime INTEGER; 

BEGIN 
    SELECT 1 from RDB$DATABASE into :var_SecondsOfTime ; 
END^ 

set term ;^ 

第二組の項はカラットの前にセミコロンを必要とします。

関連する問題