sql >> Database >  >> RDS >> SQLite

Wat is de limiet van SQL-variabelen die men kan specificeren in een enkele execSQL-query?

De limiet is hard gecodeerd in sqlite3.c en is ingesteld op 999. Helaas kan deze worden gewijzigd, maar alleen tijdens het compileren. Hier zijn de relevante fragmenten:

/*
** The maximum value of a ?nnn wildcard that the parser will accept.
*/
#ifndef SQLITE_MAX_VARIABLE_NUMBER
# define SQLITE_MAX_VARIABLE_NUMBER 999
#endif


/*
** The datatype ynVar is a signed integer, either 16-bit or 32-bit.
** Usually it is 16-bits.  But if SQLITE_MAX_VARIABLE_NUMBER is greater
** than 32767 we have to make it 32-bit.  16-bit is preferred because
** it uses less memory in the Expr object, which is a big memory user
** in systems with lots of prepared statements.  And few applications
** need more than about 10 or 20 variables.  But some extreme users want
** to have prepared statements with over 32767 variables, and for them
** the option is available (at compile-time).
*/
#if SQLITE_MAX_VARIABLE_NUMBER<=32767
typedef i16 ynVar;
#else
typedef int ynVar;
#endif


  1. Hoe u JSON-geformatteerde queryresultaten kunt verfraaien in SQLcl (Oracle)

  2. Hoe automatisch een unieke id in SQL genereren, zoals UID12345678?

  3. Geef de besturing door aan een specifieke regel met de opdracht Goto Label in PLSQL

  4. Genereer een resultatenset van oplopende datums in TSQL