Subject Re: [firebird-support] Invalid argument in EXECUTE STATEMENT - cannot convert to string
Author Tim Ward
In fact it was elementid.

My problem was how long it took me to guess what the error message meant
(I didn't find it in the FAQ of what error messages mean?). Wording like
"You can't EXECUTE STATEMENT a NULL, it has to be a string" would have
been immediately clear.

On 26/06/2014 12:58, Thomas Beckmann thomas.beckmann@...
[firebird-support] wrote:
> userClause is probably null. Then the entire string will be null.
>
> Am 25.06.2014 16:08, schrieb Tim Ward tdw@... [firebird-support]:
>>
>>
>> Anyone know what this error message actually means?
>>
>> Yes I am trying to run an EXECUTE STATEMENT, but it's not clear to me
>> what an "argument" means in this context, or what it is that something
>> is trying to convert to a string, or why it's trying to do so, or why it
>> can't be done.
>>
>> execute statement
>>
>> 'select first 1 MODULEID, ELEMENTID from TBLMODULE' ||
>> :tableType || ' ' ||
>> 'where ELEMENTID = ' ||:ELEMENTID || :userClause ||'
>> order by 1 ASC'
>>
>> into :nModuleId, :nElementId;
>>
>> tableType is a varchar
>> elementid is a bigint
>> userclause is a varchar
>>
>> nmoduleid is a bigint
>> nelementid is a bigint
>>
>> The only thing I can think of, after struggling for some time to
>> understand the message, is that the thing between "statement" and "into"
>> is the "argument", and the only reason I can think of that it might not
>> be a string - despite obviously looking like one!! - is that elementId
>> is null (neither of the other variables can ever be null). Does that
>> make sense?
>>
>> --
>> Tim Ward
>>
>>


--
Tim Ward