2016-10-18 4 views
1

SQLファイルを実行することはできません:私はisqlを使用して、次のコードを実行しようとしている

IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'SFPTB051_ABERTURARCLH')) 
BEGIN 
    SELECT * FROM SFPTB051_ABERTURARCLH; 
END 

方法を私がやっている:

isql -i sql_scripts/test.sql _input/mygdb.GDB -user SYSADM -pass masterkey 

出力:

Statement failed, SQLSTATE = 42000 
Dynamic SQL Error 
-SQL error code = -104 
-Token unknown - line 1, column 1 
-IF 
At line 1 in file sql_scripts/test.sql 
Expected end of statement, encountered EOF 

ideias?

ありがとうございます!

UPDATE ---

私がしようとしている以下:

SET TERM # ; 

EXECUTE BLOCK AS 
BEGIN 
    SELECT * FROM SFPTB051_ABERTURARCLH 
END# 

SET TERM ; # 

しかし、戻っています:

Statement failed, SQLSTATE = 42000 
Dynamic SQL Error 
-SQL error code = -104 
-Token unknown - line 4, column 1 
-END 
+0

'if'はSPROC内でのみ使用することができます:

あなたのブロック文は次のようなものを見ることができます。それ自体で有効なクエリコマンドではありません。 –

+0

'EXECUTE BLOCK'を見てください。それはトリックを行う必要があります。 –

+0

私に例を挙げてもらえますか? –

答えて

1

は通常、ブロックステートメント内のSELECTステートメントは、その値を返す必要があります。たとえば、それらを変数または戻り値に戻すことができます。これらはほぼ同じです。

さらに、ブロックステートメント内のすべてのステートメントは、セミコロン(;)で終了する必要があります。

SET TERM # ; 

EXECUTE BLOCK AS 
DECLARE VARIABLE FIELD1 TYPE OF COLUMN SFPTB051_ABERTURARCLH.FIELD1; 
/* declare more variables as needed */ 
BEGIN 
    FOR 
    SELECT FIELD1 
    FROM SFPTB051_ABERTURARCLH 
    INTO :FIELD1 
    DO 
    BEGIN 
    /* do something with the variables values */ 
    END 
END# 

SET TERM ; # 
関連する問題