2017-02-21 4 views
0

Bitte helfen Sie mir den Fehler in dieser gespeicherten Prozedur getan zu lösen:Stored Procedure mysql Syntax

CREATE DEFINER=`root`@`localhost` PROCEDURE `repos`(IN `order_condition` VARCHAR(100) CHARSET utf8, IN `from_date` VARCHAR(255) CHARSET utf8, IN `to_date` VARCHAR(255) CHARSET utf8, IN `dept_id` TINYINT(4), IN `type` VARCHAR(15) CHARSET utf8, IN `search_value` VARCHAR(50) CHARSET utf8, IN `institutionid` INT(11)) 
    NO SQL 
BEGIN 

set @strWhere = ""; 
set @strWhere = CONCAT(@strWhere,"t1.inst_id = ",instid); 
set @selectstr = ''; 
set @selectstr2 = ''; 
set @joinstr = ''; 
set @joinstr2 = ''; 
set @group2= ''; 

set @selectstr = CONCAT(",t2.`std_name`"); 
set @selectstr2= CONCAT(",t5.`student_name`,t5.`roll_no`,t5.`student_id`"); 
set @joinstr = CONCAT("left join standard_master as t2 on t1.`std_id`= t2.`std_id` "); 
set @joinstr2 = CONCAT("left join student_det as t5 on t1.`std_id`= t5.`std_id` "); 
set @strWhere = CONCAT(@strWhere," AND t1.std_id = ",dept_id); 
set @group2= CONCAT("t5.`student_id`"); 


SET @query = CONCAT("select t1.* ",@selectstr," , t3.term_name, SUM(t4.amount) as fee_amount",@selectstr2," FROM inst_fee AS t1 ",@joinstr," left join term_master as t3 on t1.term_id = t3.term_id left join inst_amtdet as t4 on t4.masterid = t1.masterid ",@joinstr2," WHERE ",@strWhere, " AND ",@group2, " NOT IN (select id from student_master) Group by t1.f_name ", order_condition); 

PREPARE stmt FROM @query; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

#select @query; 


END 

Es zeigt eine Fehler Syntax:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN(

mir bitte helfen, den Fehler zu beheben. Danke

+0

Ihr Code hat keine 'IN (' ... –

+0

Es gibt IN Parameter. – Devart

+0

@Devart Ja, aber es hat keine schließende Klammer. Wenn MySQL Syntaxfehler berichtet, enthält es immer ein Literal Zitat von der anstößige Code, also ist dies entweder nicht die richtige Nachricht oder wird durch einen anderen Code ausgelöst. –

Antwort

0

Die Syntax ist korrekt. Es funktioniert auf neuen MySQL-Servern.

Es ist möglich, dass Sie einen alten MySQL-Server verwenden, bei dem die CHARSET-Klausel für String-Parameter nicht unterstützt wurde. Überprüfen Sie die Syntax für Ihre Serverversion.

+0

Danke.Ya Ich habe das Trennzeichen verwendet, wenn ich versuche zu speichern, ich bekomme die error.cant in der Lage um zu speichern – User11

+0

Ich habe die Antwort geändert. Überprüfen Sie es. Was ist die Server-Version? – Devart

+0

Ya checked Seine 5.6.21 – User11

Verwandte Themen