On 13-06-2021 07:48, Omacht András wrote:
[..]
Why is a valid call any of the above? How is concatenation possible
outside the parentheses?
And, if valid, why is the concatenated text not the result in all cases?
2.5, 3.0 and 4.0 is affected too.
Should I create a ticket, or is it the expected behavior?
The problem is related to the fact that the parentheses in EXECUTE
PROCEDURE are optional, so
execute procedure ex('Exception ') || 'message';
is equivalent to
execute procedure ex(('Exception ') || 'message');
That is, the value passed as an argument is not `'Exception'`, but the
expression `('Exception') || 'message'`.
So, this part is not a bug as far as I'm concerned, just a weird corner
case due to ambiguous syntax.
The second part of your question, I cannot reproduce. In both cases the
result is an exception with message 'exception message', not just
'message'. How are you executing this?
The result in ISQL is:
SQL> execute procedure ex('Exception') || 'message';
Statement failed, SQLSTATE = HY000
exception 1
-GL_EX
-Exceptionmessage
-At procedure 'EX' line: 9, col: 3
SQL> execute procedure ex('Exception ') || 'message';
Statement failed, SQLSTATE = HY000
exception 1
-GL_EX
-Exception message
-At procedure 'EX' line: 9, col: 3
SQL> execute procedure ex('Exception') || ' message';
Statement failed, SQLSTATE = HY000
exception 1
-GL_EX
-Exception message
-At procedure 'EX' line: 9, col: 3
SQL>
--
Mark Rotteveel
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel