user6739366
user6739366

Reputation:

Can't execute sql file

I'm trying to execute the following code using isql:

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

The way i'm doing:

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

Output:

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

Any ideias?

Thanks!

UPDATE ---

I'm trying the following:

SET TERM # ;

EXECUTE BLOCK AS
BEGIN
  SELECT * FROM SFPTB051_ABERTURARCLH
END#

SET TERM ; #

But it's returning:

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

Upvotes: 1

Views: 781

Answers (1)

René Hoffmann
René Hoffmann

Reputation: 2815

Usually, select statements within a block statement need to return their values. For example, you can return them into variables or return values, which are almost the same.

Furthermore, every statement within a block statement has to be terminated by a semi-colon (;).

Your block statement could look something like this:

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 ; #

Upvotes: 1

Related Questions