on 2018 Aug 26 11:33 AM
Historically, there have been many [cough] arcane limitations on coding a SELECT as an expression; this may be another.
SELECT @@VERSION; '16.0.0.2512' -- IF EXISTS SELECT TOP ORDER BY expression fails BEGIN DECLARE @yn VARCHAR ( 1 ); SET @yn = IF EXISTS ( SELECT TOP 1 START AT 100 * FROM RowGenerator WHERE row_num < 50 ORDER BY row_num ASC ) THEN 'Y' ELSE 'N' END IF; SELECT @yn; END; Could not execute statement. Syntax error near 'ORDER' on line 7 SQLCODE=-131, ODBC 3 State="42000" Line 1, column 1 (Continuing after error) -- IF EXISTS SELECT TOP ORDER BY statement fails BEGIN DECLARE @yn VARCHAR ( 1 ); IF EXISTS ( SELECT TOP 1 START AT 100 * FROM RowGenerator WHERE row_num < 50 ORDER BY row_num ASC ) THEN SET @yn = 'Y'; ELSE SET @yn = 'N'; END IF; SELECT @yn; END; Could not execute statement. Syntax error near 'ORDER' on line 7 SQLCODE=-131, ODBC 3 State="42000" Line 1, column 1 (Continuing after error) -- SELECT TOP INTO ... IF IS NOT NULL works (example 1) BEGIN DECLARE @yn VARCHAR ( 1 ); DECLARE @dummy_result SMALLINT; SET @dummy_result = NULL; SELECT TOP 1 START AT 100 row_num INTO @dummy_result FROM RowGenerator WHERE row_num < 50 ORDER BY row_num ASC; IF @dummy_result IS NOT NULL THEN SET @yn = 'Y'; ELSE SET @yn = 'N'; END IF; SELECT @yn; END; @yn 'N' -- SELECT TOP INTO ... IF IS NOT NULL works (example 2) BEGIN DECLARE @yn VARCHAR ( 1 ); DECLARE @dummy_result SMALLINT; SET @dummy_result = NULL; SELECT TOP 1 START AT 100 row_num INTO @dummy_result FROM RowGenerator WHERE row_num < 200 ORDER BY row_num ASC; IF @dummy_result IS NOT NULL THEN SET @yn = 'Y'; ELSE SET @yn = 'N'; END IF; SELECT @yn; END; @yn 'Y'
Request clarification before answering.
Breck - as far as I can remember, EXISTS did have a restriction on not supporting ORDER BY. The game-changer was the support of SELECT TOP and I think what you're seeing is an unintended restriction. I'll have a look. There isn't really any reason why queries (1) and (2) shouldn't work.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Yes, welcome back! ( I thought you were shackled to Hanna 🙂
Or IQ?
FWIW, there might be a choice to MERGE "gpaulley" and this legendary user🙂
User | Count |
---|---|
68 | |
16 | |
12 | |
7 | |
7 | |
4 | |
4 | |
4 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.