注册

存储过程字符串转换,select count(1) into @rowSum1怎么用字符串接还可以rowSum1是数字类型

🍐 2023/08/15 599 2

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:win11
【CPU】:I7-10510U
【问题描述】*:CREATE OR REPLACE PROCEDURE site_statistics_withpage("begintime" IN VARCHAR(32),
"endtime" IN VARCHAR(32),
"unitids" IN VARCHAR(10000),
"beginIndex" IN int,
"endIndex" IN int,
out "rowSum" IN int)
AUTHID DEFINER
as
v_str varchar2(1000);
v_str_sum varchar2(1000);
v_strsql varchar2(1000);
rowsum1 int;
BEGIN

SET @v_str := CONCAT("SELECT
			                   ( SELECT siteName FROM siteentity WHERE id = cvs.siteId ) AS NAME,
			                        COUNT( siteId ) AS num,
															
															( SELECT
			IFNULL(COUNT( siteId ),0) AS num
		FROM
			conf_vs_siteused cvs
			INNER JOIN conf c ON cvs.confId = c.id 
		WHERE
			c.begin_Time > '", begintime, "'
			AND c.end_Time < '", endtime, "'
			AND if(1= '", unitids, "' ,1=1,cvs.unitId IN (", unitids, "))
			AND c.conf_State = 4 ) totalnum,
			                        siteId,
			                        ROUND(SUM(TIMESTAMPDIFF(SECOND,
						                        (DATE_FORMAT(cvs.beginDttm,'%Y-%m-%d %H:%i:%s')),
						                        (DATE_FORMAT(cvs.endDttm, '%Y-%m-%d %H:%i:%s'))))/60) AS duration
		                        FROM conf_vs_siteused cvs
		                       	INNER JOIN conf c1 ON cvs.confId = c1.id 
	                        	WHERE 
		                      	c1.begin_Time >'", begintime, "'
			                      AND c1.end_Time <'", endtime, "'
														AND if(1= '", unitids, "',1=1, cvs.unitId IN (", unitids, "))
			                      AND c1.conf_State = 4 
		                        GROUP BY cvs.siteId");


SET @v_str_sum := concat('select count(1) into @rowSum1  from (', @v_str, ') b');
PREPARE stmt FROM @v_str_sum;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET rowSum := @rowsum1;


SET @v_strsql := concat('select * from (', @v_str, ') c limit ', beginIndex, ',', endIndex);
PREPARE stmt1 FROM @v_strsql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

END
;;
各位大哥,请问是不是不能用这么多变量,这个字符串转换报错,用CAST也不行,求教。

回答 0
暂无回答
扫一扫
联系客服