簡體   English   中英

存儲過程mysql語法

[英]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

它顯示語法錯誤:

您的SQL語法有誤; 請查看與您的MySQL服務器版本相對應的手冊,以獲取在'IN(

請幫助我修復錯誤。 謝謝

語法正確。 它適用於新的MySQL服務器。

可能使用的是舊的MySQL服務器,其中字符串參數不支持CHARSET子句。 檢查服務器版本的語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM