kayzombie 2011-05-11 19:31
浏览 277
已采纳

mysql 中存储过程动态生成sql语句执行的问题

最近把系统从mssql转到mysql上,原来有做统计的存储过程也要一并移过来,原来的存储过程是用行列转换,动态生成sql语句然后用exec执行的,换到mysql后改用EXECUTE执行,在mysql命令行中调用存储过程可以得到列表
+-------+--------------+-----------------+--------------+-----------+--------+
| se_no | max(se_code) | head | 娼滃湪瀹㈡埛 | 鏈€夋嫨 | 鍚
堣 |
+-------+--------------+-----------------+--------------+-----------+--------+
| 1 | NULL | 瓒呯骇绠$悊鍛? | 1 | 1 | 2
|
| NULL | NULL | 瓒呯骇绠$悊鍛? | 1 | 1 | 2
|
+-------+--------------+-----------------+--------------+-----------+--------+
(因为数据库是utf8的,所以列表是乱码),但用jdbc调用存储过程后好像没有执行execute语句,而是直接返回了动态生成的sql语句,就和在命令行中不执行最后两句
[code="sql"]PREPARE stmt2 FROM @psql;
EXECUTE stmt2;[/code]
的效果一样,哪位对mysql比较熟悉的大哥能帮个忙啊

存储过程代码
[code="sql"]CREATE PROCEDURE empCusState( arg_sqlAppend text )
BEGIN
SET @psql = 'select se_no,max(se_code),max(se_name) as head';
SELECT @psql:=CONCAT(@psql,
CASE WHEN typ_name IS NOT NULL
THEN (CONCAT(',sum(case typ_name when ''',typ_name,
''' then 1 else 0 end) as ',typ_name,' '))
ELSE (', sum(case when typ_name is null then 1 else 0 end) as 未选择')
END)
FROM
(select typ_name from cus_cor_cus
left join type_list on cor_typ_id=typ_id
where cor_isdelete='1' group by typ_name order by typ_name desc)
AS a;
SET @psql:=CONCAT(@psql,
',count(cor_code)as 合计 from cus_cor_cus
inner join sal_emp on cor_se_no=se_no
left join type_list on cor_typ_id=typ_id
where cor_isdelete=''1'' group by se_no with rollup');
PREPARE stmt2 FROM @psql;
EXECUTE stmt2;
END[/code]

  • 写回答

2条回答 默认 最新

  • iihero 《SybaseASE15.X全程实践》书籍作者 2011-05-12 09:58
    关注

    [quote]select是用来拼装sql语句的,主要是没执行EXECUTE的,在命令行下call是正常的 [/quote]
    用set一样可以拼装sql语句。
    在程序里头,会返回多个结果集(每个select一个结果集),你取的是第一个结果集,对应的就这个sql语句。
    这跟命令行里头确实不一样。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格