Skip to main content
Solved

SQL Executor issues a warning for a valid statement

  • January 14, 2024
  • 3 replies
  • 82 views

hkingsbury
Celebrity
Forum|alt.badge.img+65

Using Form/Workbench 2022.2, connecting to MSSQL 15 with 10.9 SDE over the top.

 

I'm not an SQL expert, and this statement was a combination of my knowledge, ChatGPT and colleagues knowledge

SELECT
    p.*,
    -- Calculate the rate of nitrogen (N) application over the entire spread.
    -- Convert the area to hectares, then multiply by the rate to get the total weight.
    -- Finally, divide by the applied area to obtain the average rate.
    SUM(p.Shape.STArea()  / 10000 * p.NutrientN / p.AppliedAreaInHa) OVER () AS  total_n_rate,
 
    -- Calculate the total fertilizer rate over the entire spread.
    -- Convert the area to hectares, then multiply by the rate to get the total weight.
    -- Finally, divide by the applied area to obtain the average rate.
    SUM(p.Shape.STArea()  / 10000 * p.RateKgPerHa / p.AppliedAreaInHa) OVER () AS total_fert_rate
FROM
    [Agtech].[MASTER].[ProofOfPlacementSwath_evw] p
WHERE
    p.[SwathMergeID] = '@Value(swathmerge)';

This runs fine in SSMS with no errors and returns expect results.

 

When I put this into an SQL Executor  in FME it runs and I get the expected results, but it gives me a warning:

 

imageI'm happy that the query is working, but it fills up the logs with 1000s of lines of warnings which suppresses other warnings in the logs.

 

The code snippet i've included obviously has comments. I've found advice to remove comments but I get the same result regardless of comments being there or not.

 

Any idea whats not quite right with this?

Best answer by ctredinnick

The error message threw me, because while it happens in the schema detection, the actual issue is somehow the semicolon. Solution is to either add this to the first row:

FME_SQL_DELIMITER ;

Or remove the semicolon. They're generally not needed because FME will always batch the SQL statement as one unless you tell it otherwise, which is what the FME_SQL_DELIMITER is for, to run in separate batches like a GO.

Even a statement like Select 1 as OBJECTID; will create the same warning message about being unable to detect the schema.

This post is closed to further activity.
It may be an old question, an answered question, an implemented idea, or a notification-only post.
Please check post dates before relying on any information in a question or answer.
For follow-up or related questions, please post a new question or idea.
If there is a genuine update to be made, please contact us and request that the post is reopened.

3 replies

ctredinnick
Supporter
Forum|alt.badge.img+19
  • Supporter
  • Best Answer
  • January 15, 2024

The error message threw me, because while it happens in the schema detection, the actual issue is somehow the semicolon. Solution is to either add this to the first row:

FME_SQL_DELIMITER ;

Or remove the semicolon. They're generally not needed because FME will always batch the SQL statement as one unless you tell it otherwise, which is what the FME_SQL_DELIMITER is for, to run in separate batches like a GO.

Even a statement like Select 1 as OBJECTID; will create the same warning message about being unable to detect the schema.


david_r
Celebrity
  • January 15, 2024

If it isn't the semicolon that's confusing FME, try modifying the SELECT statement to

SELECT TOP(100) PERCENT
FROM ...

FME will detect it and try to be less "intelligent" about the query.


hkingsbury
Celebrity
Forum|alt.badge.img+65
  • Author
  • Celebrity
  • January 15, 2024

The error message threw me, because while it happens in the schema detection, the actual issue is somehow the semicolon. Solution is to either add this to the first row:

FME_SQL_DELIMITER ;

Or remove the semicolon. They're generally not needed because FME will always batch the SQL statement as one unless you tell it otherwise, which is what the FME_SQL_DELIMITER is for, to run in separate batches like a GO.

Even a statement like Select 1 as OBJECTID; will create the same warning message about being unable to detect the schema.

Thats the problem! remove the semicolon and it works