title: CALL failed: (1305) PROCEDURE does not existStore failed
body: <p>Could someone explain me what is the cause of: CALL failed: (1305) PROCEDURE does not exist
  I am a newbie, so my knowledge on the subject is not so good. As far as I know it is because of syntax error. However The syntax should be fine as it passes 8 parametres (2 of wich I hardcoded to make sure they did not have any type casting issues). If someone smarter than me could tell me why am I banging my head in the wall with this, I would apreciate it.</p>
  
  <p>CALL failed: (1305) PROCEDURE tk2030.tase_kuutio does not existStore failed: (1305) PROCEDURE tk2030.tase_kuutio does not exist</p>
  
  <p>PHP call:</p>
  
  <pre><code>$fetch_params['klaji'] = 0;
  $fetch_params['plaji'] = 0;
  //$fetch_params['isanta_rivi'] = 1;
  
          if (!$mysqli-&gt;multi_query('CALL tase_kuutio(' .$fetch_params['tilikausi']. ',' .$fetch_params['kvartaali']. ',' .$fetch_params['kuukausi']. ',' .$fetch_params['kpaikka']. ',' .$fetch_params['projekti'].  ',' . $fetch_params['klaji']. ',' .$fetch_params['plaji']. ',' .$fetch_params['isanta_rivi']. ');')) {
              echo "CALL failed: (" . $mysqli-&gt;errno . ") " . $mysqli-&gt;error;
          }
  </code></pre>
  
  <p>Here us the procedure tase_kuutio is the one getting the error.</p>
  
  <pre><code>DROP PROCEDURE IF EXISTS tase_kuutio//
  /*
      Funktio taseen summien laskemiseen
      Parametrit :
          tilikausi_id - Käsiteltävän tilikauden määrittävä tunniste. Pakollinen tieto.
          kvartaali_id - Käsiteltävän kvartaalin määrittävä tunniste (ei enää käytössä). Arvo 0 tarkoittaa, että kvartaalia ei ole valittu.
          kuukausi_id - Käsiteltävän kuukauden määrittävä tunniste. Arvo 0 tarkoittaa, että kuukautta ei ole valittu.
          dimensioiden id:t (kpaikka_id,projekti_id,klaji_id,plaji_id) - Määrittävät huomioitavat dimensioiden arvot. Arvo -1 tarkoittaa, että kyseistä dimensioita ei ole yrityksellä käytössä.
  */
  CREATE PROCEDURE tase_kuutio (IN tilikausi_id INT , IN kvartaali_id INT , IN kuukausi_id INT , IN kpaikka_id INT , IN projekti_id INT , IN klaji_id INT , IN plaji_id INT , IN isanta INT)
  BEGIN 
      /*
          Muuttujat korjattuja klaji_id, plaji_id varten. Näitä arvoja käytetään WHERE-ehdossa ja ne päätellään parametreinä annettujen id:den perusteella.
      */
      DECLARE k_klaji_id , k_plaji_id SMALLINT;
      /*
          Muuttujat, jotka sisältävät taseen laskennan ehtolausekkeet.
          isanta_ehto -   Ehtolauseke, joka määrittää lasketaanko summat kaikille riveille, vai suoraan jonkin tietyn otsikon alle sijoittuville riveille. Vastaa käyttöliittymässä toiminnallisuutta, jossa 
                          +-näppäintä painamalla saadaan esille summat, joista rivin summa koostuu
          nyk_summa_ehto - Jakson muutoksen summien laskemiseen käytettävä ehto. Mikäli jakson muutos on yhtä suuri kuin kumulatiivinen summa, on muutos = kumul. summa - alkava saldo
          nyk_kumul_ehto - Käsiteltävän jakson kumulatiivisten summien laskemiseen käytettävä ehto.
          e_kumul_ehto - Alkavan taseen summien laskemiseen käytettävä ehto. Eli hakee summat käsiteltävän kauden alussa (eli edellisen kauden lopullisen kumulatiivisen summan).
      */
      DECLARE isanta_ehto , nyk_summa_ehto , nyk_kumul_ehto , e_kumul_ehto VARCHAR(200) DEFAULT '';
  
      /*Määritetään käsiteltävä tilikausi. Pakollinen ehto.*/
      SET nyk_summa_ehto = CONCAT( 'tilikausi = ' , tilikausi_id);
  
      /*
          Alla määritetään korjatut ehdot klajille ja plajille. Korjaus tarvitsee tehdä, sillä yritykset joille ei näytetä jompaakumpaa tai kumpaakaan
          näistä dimensioista, antavat id:nä arvon -1, joka ei ole validi ehto. Tässä tapauksessa arvoksi muutetaan 0, joka merkitsee, ettei dimension arvoa rajoiteta.
      */
      IF klaji_id=-1 THEN
          SET k_klaji_id=0;
      ELSE
          SET k_klaji_id=klaji_id;
      END IF;
  
      IF plaji_id=-1 THEN
          SET k_plaji_id=0;
      ELSE
          SET k_plaji_id=plaji_id;
      END IF;
  
      /*
          Alla määritetään 
      */
      IF kuukausi_id &gt; 0 THEN
          SET nyk_summa_ehto = CONCAT( nyk_summa_ehto , ' AND tilikk &lt;= ' , kuukausi_id);
      ELSEIF kvartaali_id &gt; 0 THEN
          SET nyk_summa_ehto = CONCAT( nyk_summa_ehto , ' AND kvartaali &lt;= ' , kvartaali_id);
      END IF;
      /*Määritetään käsiteltävä tilikausi. Pakollinen ehto.*/
      SET nyk_kumul_ehto = CONCAT( 'tilikausi = ' , tilikausi_id);
  
      IF kuukausi_id &gt; 0 THEN
          SET nyk_kumul_ehto = CONCAT( nyk_kumul_ehto , ' AND tilikk &lt;= ' , kuukausi_id);
      ELSEIF kvartaali_id &gt; 0 THEN
          SET nyk_kumul_ehto = CONCAT( nyk_kumul_ehto , ' AND kvartaali &lt;= ' , kvartaali_id);
      END IF;
      /*
          Määritetään käsiteltävä tilikausi. Pakollinen ehto.
          Alkavaa saldoa laskettaessa käsiteltävä tilikausi on kuitenkin edellinen tilikausi.
      */
      SET e_kumul_ehto = CONCAT( 'tilikausi = ' , tilikausi_id - 1);
  
      /*
          Alla luodaan väliaikaiset taulut, joihin kerätään kunkin taseen sarakkeen arvot ennen niiden yhdistämistä
      */
      CREATE TEMPORARY TABLE tbl_1 (
          rivi INT ,
          rivi_id INT ,
          isanta_rivi INT ,
          taso INT ,
          lihavointi INT ,
          tili_rivi INT ,
          otsikko VARCHAR(100) ,
          selite VARCHAR(100) ,
          summa DECIMAL(10,2) ,
          PRIMARY KEY USING HASH (rivi)
      ) ENGINE = MEMORY;
  
      CREATE TEMPORARY TABLE tbl_2 (
          rivi INT ,
          kumul DECIMAL(10,2) ,
          PRIMARY KEY USING HASH (rivi)
      ) ENGINE = MEMORY;
  
      CREATE TEMPORARY TABLE tbl_3 (
          rivi INT ,
          e_kumul DECIMAL(10,2) ,
          PRIMARY KEY USING HASH (rivi)
      ) ENGINE = MEMORY;
  
      /*
          Määritetään isanta_ehto, eli annetaan sen rivin id, jonka alariveille summat halutaan laskea. Mikäli arvo on 0, lasketaan arvot kaikille riveille.
      */
      IF isanta &gt; 0 THEN
          SET isanta_ehto = CONCAT('AND t.isanta_rivi = ' , isanta);
      END IF;
  
  
      /*
          Lasketaan tauluun tbl_1 jakson muutokset. etumerkki-sarakkeen arvo määrittää, täytyykö pääkirjalta haettujen summien merkkiä kääntää vai ei.
      */
      SET @stmt = CONCAT( 'INSERT INTO tbl_1 (rivi,rivi_id,isanta_rivi,taso,lihavointi,tili_rivi,otsikko,selite,summa)
                          SELECT  t.rivi , t.rivi_id , t.isanta_rivi , t.taso , t.lihavointi , t.rivi_tyyppi , t.otsikko , t.selite , 
                                  CASE etumerkki
                                      WHEN 0 THEN -1 * IFNULL(SUM(s.summa),0.00) 
                                      ELSE IFNULL(SUM(s.summa),0.00) 
                                  END AS summa
                          FROM tase_mem t
                                  LEFT JOIN kuutio_paakirja s ON s.tili = t.tili
                          WHERE   ' , nyk_summa_ehto , ' 
                                  AND s.kpaikka_id = ' , kpaikka_id , ' AND s.projekti_id = ' , projekti_id , ' AND s.klaji_id = ' , k_klaji_id , ' AND s.plaji_id = ' , k_plaji_id , ' '  , isanta_ehto , '
                          GROUP BY t.rivi , t.rivi_id , t.taso , t.lihavointi , t.rivi_tyyppi , t.etumerkki , t.otsikko , t.selite;');
      PREPARE stmt FROM @stmt;
      EXECUTE stmt;
  
      /*
          Lasketaan tauluun tbl_2 jakson kumulatiiviset summat. etumerkki-sarakkeen arvo määrittää, täytyykö pääkirjalta haettujen summien merkkiä kääntää vai ei.
      */
      SET @stmt = CONCAT( 'INSERT INTO tbl_2(rivi,kumul)
                          SELECT  t.rivi , 
                                  CASE etumerkki
                                      WHEN 0 THEN -1 * IFNULL(SUM(s.summa),0.00) 
                                      ELSE IFNULL(SUM(s.summa),0.00) 
                                  END AS kumul
                          FROM tase_mem t
                                  LEFT JOIN kuutio_paakirja s ON s.tili = t.tili
                          WHERE   ' , nyk_kumul_ehto , ' 
                                  AND s.kpaikka_id = ' , kpaikka_id , ' AND s.projekti_id = ' , projekti_id , ' AND s.klaji_id = ' , k_klaji_id , ' AND s.plaji_id = ' , k_plaji_id , ' ' , isanta_ehto , '
                          GROUP BY t.rivi , t.rivi_id , t.taso , t.lihavointi , t.rivi_tyyppi , t.etumerkki , t.otsikko , t.selite;');
      PREPARE stmt FROM @stmt;
      EXECUTE stmt;       
  
      /*
          Lasketaan tauluun tbl_3 alkavat saldot. etumerkki-sarakkeen arvo määrittää, täytyykö pääkirjalta haettujen summien merkkiä kääntää vai ei.
      */
      SET @stmt = CONCAT( 'INSERT INTO tbl_3(rivi,e_kumul)
                          SELECT  t.rivi , 
                                  CASE etumerkki
                                      WHEN 0 THEN -1 * IFNULL(SUM(s.summa),0.00) 
                                      ELSE IFNULL(SUM(s.summa),0.00) 
                                  END AS kumul
                          FROM tase_mem t
                                  LEFT JOIN kuutio_paakirja s ON s.tili = t.tili
                          WHERE   ' , e_kumul_ehto , ' 
                                  AND s.kpaikka_id = ' , kpaikka_id , ' AND s.projekti_id = ' , projekti_id , ' AND s.klaji_id = ' , k_klaji_id , ' AND s.plaji_id = ' , k_plaji_id , ' ' , isanta_ehto , '
                          GROUP BY t.rivi , t.rivi_id , t.taso , t.lihavointi , t.rivi_tyyppi , t.etumerkki , t.otsikko , t.selite;');
      PREPARE stmt FROM @stmt;
      EXECUTE stmt;       
  
      /*
          Yhdistetään eri sarakkeet yhdeksi tauluksi
              1.sarake on alkava saldo taulusta tbl_3
              2.sarake on jakson muutos, joka saadaan suoraan taulusta tbl_1 tai mikäli se on yhtä suuri kuin kumulatiivinen summa, tbl_1- ja tbl_3-taulujen arvojen erotuksena
              3.sarake on jakson kumulatiivinen summa taulusta tbl_2
      */
      SELECT  t1.rivi , t1.rivi_id , t1.isanta_rivi , t1.taso , t1.lihavointi , t1.tili_rivi , t1.otsikko , t1.selite ,
              IFNULL(t3.e_kumul,0.00) av_saldo ,
              IF(t1.summa = t2.kumul , t1.summa - IFNULL(t3.e_kumul,0.00) , t1.summa) summa , 
              t2.kumul kumul
      FROM tbl_1 t1
          LEFT JOIN tbl_2 t2 ON t2.rivi = t1.rivi
          LEFT JOIN tbl_3 t3 ON t3.rivi = t1.rivi
      ORDER BY t1.rivi_id asc , t1.rivi asc;
  
      DROP TABLE tbl_1;
      DROP TABLE tbl_2;
      DROP TABLE tbl_3;
  
  END//
  
  delimiter ;
  
  /*CALL tase_kuutio(4,0,0,0,0,0,0,1);*/
  </code></pre>