Prepared Statements (MySQL): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
 
(Een tussenliggende versie door dezelfde gebruiker niet weergegeven)
Regel 7: Regel 7:
 
<pre>
 
<pre>
 
set @string="update tabel set velda=ifnull(velda,''); update tabel set veldb=ifnull(veldb,'');" -- Werkt niet!
 
set @string="update tabel set velda=ifnull(velda,''); update tabel set veldb=ifnull(veldb,'');" -- Werkt niet!
 +
set @string="update tabel set velda=ifnull(velda,''), veldb=ifnull(veldb,'');" -- Werkt wel!
 
</pre>
 
</pre>
  
Regel 20: Regel 21:
  
 
* http://stackoverflow.com/questions/2977356/in-mysql-how-to-pass-a-table-name-as-stored-procedure-and-or-function-argument
 
* http://stackoverflow.com/questions/2977356/in-mysql-how-to-pass-a-table-name-as-stored-procedure-and-or-function-argument
* http://rpbouman.blogspot.nl/2005/11/mysql-5-prepared-statement-syntax-and.html
+
* http://rpbouman.blogspot.nl/2005/11/mysql-5-prepared-statement-syntax-and.html - Achtergrondinfo, oa. tav. prestaties
 
* http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-prepared-statements.html
 
* http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-prepared-statements.html

Huidige versie van 12 dec 2015 om 18:03

MySQL's variant van dynamische SQL heet Prepared statements. Als je weet waar je mee bezig bent, kunnen prepared statements heel handig zijn. Vaak zijn ze zelfs de enige oplossing.

Eén commando per statement

Een prepared statement kan maar één commando bevatten:

set @string="update tabel set velda=ifnull(velda,''); update tabel set veldb=ifnull(veldb,'');" -- Werkt niet!
set @string="update tabel set velda=ifnull(velda,''), veldb=ifnull(veldb,'');" -- Werkt wel!

Bronnen

Dynamische SQL in het algemeen

Prepared statements