Reputation:
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
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