首页 新闻 会员 周边

MySql Ibatis调用存储过程

0
悬赏园豆:20 [已关闭问题] 关闭于 2016-09-27 13:11

.net 中ibatis调用mysql存储过程

Mysql存储过程

create procedure GetTicketData (       ProjectCode VARCHAR(50) )

begin   SET @sql_1="";      

SET @sql_1 = concat("CREATE TEMPORARY TABLE tmp_table SELECT a.StoreComplainID,a.id as StoreLevelComplainID,sc.DateRound,a.CategoryName,sc.Store_Code,sc.Store_Name,a.Fact_Code,a.Fact_Name,a.Item_Name,a.Content,  a.HandleResult, (case sc.Escalated when 1 then '释放' else '未释放' end Escalate,  sc.T1Escalate_Remark,sc.T2Escalate_Remark,DATE_FORMAT(sc.ComplainTime,'%Y-%m-%d') as ComplainTime         

from t_storelevelcomplain a                

LEFT JOIN t_storecomplain sc on a.StoreComplainID=sc.ID                

where sc.Project_Code = ",'"',ProjectCode,'"');

PREPARE stmt FROM @sql_1;

EXECUTE stmt;

SELECT * from tmp_table;

drop TABLE tmp_table;

end

在mysql里面可以正常执行,但放到程序里就会报错。

xml中的代码:

 <statements>

 <!--执行存储过程,导出Ticket数据-->
    <procedure id="ExportTicketData" resultClass="hashtable" >
      {call GetTicketData($ProjectCode$)}
    </procedure>

 </statements>

执行mysql时,传入的参数是:'P01',程序中传入的参数也是'P01',可程序中就是会报错,请问,有没有遇到过这个问题的园友?帮忙解答一下,谢谢!

 

 

大丽丽Yeah!的主页 大丽丽Yeah! | 初学一级 | 园豆:145
提问于:2016-09-27 10:32
< >
分享
所有回答(2)
0

在存储过程里面自己添加一些select 1,select 2这些标志,然后手动call存储过程,观察存储过程执行到哪里出错没有继续执行,慢慢的一句一句调试,看你这存储过程语句也不多,应该很容易找到出问题的语句的

风归云隐 | 园豆:416 (菜鸟二级) | 2016-09-27 10:51

在mysql里是没错的,到程序里就会出错了

支持(0) 反对(0) 大丽丽Yeah! | 园豆:145 (初学一级) | 2016-09-27 11:04

@大丽丽Yeah!: 你直接手动call存储过程没有问题吗

支持(0) 反对(0) 风归云隐 | 园豆:416 (菜鸟二级) | 2016-09-27 11:19

@风归云隐: 我刚才又查了一遍,没有的

支持(0) 反对(0) 大丽丽Yeah! | 园豆:145 (初学一级) | 2016-09-27 11:21

@大丽丽Yeah!: 那应该就是程序传进来的参数有问题,你调试一下,看看程序里面最后传到存储过程里面的参数有没有问题

支持(0) 反对(0) 风归云隐 | 园豆:416 (菜鸟二级) | 2016-09-27 11:30

@风归云隐: 程序中传过去的参数也是一样的啊

支持(0) 反对(0) 大丽丽Yeah! | 园豆:145 (初学一级) | 2016-09-27 11:41
0

已经解决了,

xml中的代码改成这样,我也不知道为啥,这样写就没问题了:

 <statements>

 <!--执行存储过程,导出Ticket数据-->    

<select id="ExportTicketData" resultClass="hashtable" >      

   call GetTicketData($ProjectCode$)   

</select>

</statements>

大丽丽Yeah! | 园豆:145 (初学一级) | 2016-09-27 13:10

之前没仔细看,你存储过程执行完返回的是select的查询结果,这种情况在ibatis里面要用select标签接收

支持(0) 反对(0) 风归云隐 | 园豆:416 (菜鸟二级) | 2016-09-27 14:08

@风归云隐: 噢噢,谢谢

支持(0) 反对(0) 大丽丽Yeah! | 园豆:145 (初学一级) | 2016-09-27 14:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册