Skip to main content
Hi all,

 

 

I'm trying to run a SQL statement after a translation to execute a stored procedure.

 

 

This SQL executes correctly -> EXECUTE EDIGISDB.data_extracts.log_data_extract ('FLUOR') in SQL*Plus however it's erroring in FME with the following message.

 

2013-04-29 15:29:35| 1.0| 0.0|ERROR |BADNEWS: Execution of statement `EXECUTE EDIGISDB.data_extracts.log_data_extract ('FLUOR')' did not succeed; error was `ORA-00900: invalid SQL statement

Any and all assistance is greatly appreciated. We've been trying different syntax none of which seems to work.

 

 

Thanks

 

 

Micahel Drover

 

Hi,

 

 

try this syntax:

 

 

begin

 

EDIGISDB.data_extracts.log_data_extract ('FLUOR');

 

end;

 

 

 

You will probably get some warning in the log about the semicolons, but you can ignore those.

 

 

David

 


Would using 

FME_SQL_DELIMITER ;

on the first line not remove the warnings?


Hi Mark,

 

 

yes, in this case it would replace the warnings with errors, since FME would then execute each part separated by a semicolon separately, which would confuse Oracle a lot :-)

 

 

On the other hand, perhaps it could be worthwhile to also try without the begin/end transaction clause. If it works, no semicolons would be needed at all.

 

 

David

 

 

 


I had followed similar approach what david has suggested. It works fine

 

 

sam
Thanks for the replies guys but stil no success with this.

 

 

I've tried David R's suggestion of removing the ; and begin/end component and still no joy. I've also tries the follwoing

 

 

FME_SQL_DELIMITER ;

 

begin

 

EDIGISDB.data_extracts.log_data_extract ('FLUOR');

 

end;

 

 

With the same result...man this isstating to test me!

 

 

Thanks

 

 

Michael
Hi,

 

 

first of all, do not use "FME_SQL_DELIMITER" at all, it is not applicable in this scenario.

 

 

Did you try my original suggestion with the begin/end clause? It should work.

 

 

If it doesn't, is the error message still the same? Can you post your log file somewhere?

 

 

David
Hi David.

 

 

I did try your initial suggestion as well as including the DELIMETER statement.

 

 

|t the moment I;m not having success with

 

 

begin

 

EDIGISDB.data_extracts.log_data_extract ('FLUOR');

 

end;

 

 

The part error log I'm getting is below.

 

 

2013-05-01 07:58:15| 0.9| 0.0|WARN |Semicolons detected in SQL. May need to use FME_SQL_DELIMITER keyword to specify a delimiter. SQL is: 'begin EDIGISDB.data_extracts.log_data_extract ('FLUOR'); end;'

2013-05-01 07:58:15| 0.9| 0.0|ERROR |BADNEWS: Execution of statement `begin EDIGISDB.data_extracts.log_data_extract ('FLUOR'); end;' did not succeed; error was `ORA-06550: line 1, column 7:

PLS-00201: identifier 'EDIGISDB.DATA_EXTRACTS' must be declared

ORA-06550: line 1, column 7:

PL/SQL: Statement ignored

'. (serverType=`ORACLE8i', serverName=`gisprod', userName=`miread', password=`***', dbname=`') (.\\stfdb.cpp:245)

2013-05-01 07:58:16| 0.9| 0.0|WARN |Semicolons detected in SQL. May need to use FME_SQL_DELIMITER keyword to specify a delimiter. SQL is: 'begin EDIGISDB.data_extracts.log_data_extract ('FLUOR'); end;'

2013-05-01 07:58:16| 0.9| 0.0|ERROR |BADNEWS: Execution of statement `begin EDIGISDB.data_extracts.log_data_extract ('FLUOR'); end;' did not succeed; error was `ORA-06550: line 1, column 7:

PLS-00201: identifier 'EDIGISDB.DATA_EXTRACTS' must be declared

ORA-06550: line 1, column 7:

PL/SQL: Statement ignored

'. (serverType=`ORACLE8i', serverName=`gisprod', userName=`miread', password=`***', dbname=`') (.\\stfdb.cpp:245)

2013-05-01 07:58:16| 0.9| 0.0|INFORM|Translation was SUCCESSFUL with 4 warning(s) (0 feature(s)/0 coordinate(s) output)

2013-05-01 07:58:16| 0.9| 0.0|INFORM|FME Session Duration: 21.8 seconds. (CPU: 0.2s user, 0.3s system)

2013-05-01 07:58:16| 0.9| 0.0|INFORM|END - ProcessID: 6376, peak process memory usage: 33960 kB, current process memory usage: 33660 kB.

Translation SUCCEEDED.

 

 

When refreshing the linked table in Mapinfo I'm not seeing the update that I'm expecting.

 

 

Appreciate your help David.

 

 

Thanks

 

 

Michael

 

 

 


Hi

 

 

The error which you have reported is actually generated from Oracle and not from FME. FME has infact executed the stored procedure

 

 

Please test your stored procedure

 

 

ORA-06550 is generally PLSQL compilation error

 

 

Sam
Thanks David R. Your syntax was correct however there were some access privileges that needed to be allowed for our read user. I've had our Oracle guru take a look at it for me and he has sorted it. The

PLS-00201: identifier 'EDIGISDB.DATA_EXTRACTS' must be declared

 was the giveaway for him.

 

 

It's all up and running.

 

 

Thanks again.

 

 

Michael

Reply