Variabelen (MySQL): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Regel 8: Regel 8:
  
 
  set @ouder=(select tid from term_data where name = "DeWalt" and description = "Koolborstels voor DeWalt");
 
  set @ouder=(select tid from term_data where name = "DeWalt" and description = "Koolborstels voor DeWalt");
 +
 +
== Input-argumenten bij sprocs ==
 +
 +
Een input-argument (of hoe dat moge heten) in een sproc, heeft geen '@' nodig, maar er zijn wel beperkingen:
 +
 +
<pre>
 +
CREATE DEFINER=`root`@`localhost` PROCEDURE `ExportFixNull`(in tblname tinytext )
 +
BEGIN
 +
 +
  select tblname;          -- Dit werkt!
 +
  select * from tblname;    -- Werk niet: Foutmelding dat tabel 'tblname' niet bestaan
 +
  select * from @tblname;  -- Syntax error
 +
 +
END
 +
</pre>
 +
 +
Wat hoe dan ook werkt: Een string samenstellen en executeren, werkt in ieder geval wel.
  
 
== Bronnen ==
 
== Bronnen ==
  
 
* https://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html
 
* https://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html

Versie van 22 jan 2016 16:20

Ook buiten sprocs kun je met variabelen hobbyen. Bv.:

set @aanbod = true;
select @aanbod;
1

Om de ééndimensionale output van een query aan een variabele toe te wijzen, moet je haakjes om de query gebruiken, met de punk-komma buiten het sluithaakje:

set @ouder=(select tid from term_data where name = "DeWalt" and description = "Koolborstels voor DeWalt");

Input-argumenten bij sprocs

Een input-argument (of hoe dat moge heten) in een sproc, heeft geen '@' nodig, maar er zijn wel beperkingen:

CREATE DEFINER=`root`@`localhost` PROCEDURE `ExportFixNull`(in tblname tinytext )
BEGIN

   select tblname;           -- Dit werkt!
   select * from tblname;    -- Werk niet: Foutmelding dat tabel 'tblname' niet bestaan
   select * from @tblname;   -- Syntax error

END

Wat hoe dan ook werkt: Een string samenstellen en executeren, werkt in ieder geval wel.

Bronnen