On Thu, 03 Sep 2015 16:44:50 +0000 Peter Haworth <pete at lcsql.com> wrote:
> The statement I'm using is: > > SELECT * FROM myTable WHERE myKey IN (:1) > > If the value I supply to be used as :1 is a single integer, the SELECT > finds the correct rows. If the value is a comma separated list of > integers, e.g 1,2 the SELECT statement does not return any rows and no > error is returned. If you think about the SQLite C interface that Livecode must be using, you'll see why lists don't work in this context. The data in your list are conveyed to SQLite as a pointer to the list data. The caller indicates how that pointer is to interpreted through the bind function used. (http://www.sqlite.org/c3ref/bind_blob.html) Livecode must bind the parameter as one of those scalar types, probably integer. SQLite then interprets the data as (say) an integer whose bytes are the ASCII encoding of the characters '1' ',' '2' ',' [...] which is probably a very big number, and one that does not match any myKey values. Hence no row returns and no error produced. > I suspect this is a Livecode problem If Livecode has a way to prevent passing a "list" type as an integer parameter then, yes, I'd say so. If not, they'd have to call it a pibcak problem and say, "well, don't do that". :-) --jkl