Variabelen (MySQL): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Regel 1: Regel 1:
Ook buiten ''sprocs'' kun je met variabelen hobbyen. Bv.:
+
== Variabelen & SQL ==
 +
 
 +
In reguliere SQL-expressies kun je variabelen gebruiken, zij het met beperkingen.
 +
 
 +
=== Voorbeeld: Set & select een variabele ===
  
 
  set @aanbod = true;
 
  set @aanbod = true;
 
  select @aanbod;
 
  select @aanbod;
 
  1
 
  1
 +
 +
=== Voorbeeld: Output van een query naar een variabele ===
  
 
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:
 
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");
 
  set @ouder=(select tid from term_data where name = "DeWalt" and description = "Koolborstels voor DeWalt");
 +
 +
=== Voorbeeld: Variabele in where-clause ===
 +
 +
Wellicht is de regel, dat je altijd een variabele kunt gebruiken waar je anders een waarde uit een tabel zou gebruiken. In dit voorbeeld gaat die analogie in ieder geval op:
 +
 +
<pre>
 +
set @begin="2016-01-01";
 +
set @eind="2016-02-01";
 +
 +
select
 +
"koolborstels", 
 +
sum(order_total),
 +
count(*) from koolborstels.uc_orders         
 +
where
 +
order_status="Completed"
 +
and
 +
created >= unix_timestamp(@begin)
 +
and 
 +
created < unix_timestamp(@eind)
 +
</pre>
  
 
== Input-argumenten bij sprocs ==
 
== Input-argumenten bij sprocs ==

Versie van 2 feb 2016 14:54

Variabelen & SQL

In reguliere SQL-expressies kun je variabelen gebruiken, zij het met beperkingen.

Voorbeeld: Set & select een variabele

set @aanbod = true;
select @aanbod;
1

Voorbeeld: Output van een query naar een variabele

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");

Voorbeeld: Variabele in where-clause

Wellicht is de regel, dat je altijd een variabele kunt gebruiken waar je anders een waarde uit een tabel zou gebruiken. In dit voorbeeld gaat die analogie in ieder geval op:

set @begin="2016-01-01";
set @eind="2016-02-01";

select 
	"koolborstels",  
	sum(order_total),
	count(*) from koolborstels.uc_orders          
where 
	order_status="Completed" 
and 
	created >= unix_timestamp(@begin) 
and   
	created < unix_timestamp(@eind)

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 bestaat
   select * from @tblname;   -- Syntax error

END

Wat hoe dan ook werkt: Een string (inclusief variabelen) samenstellen en executeren.

Bronnen