C#调用mysql存储过程和执行mysql存储过程的结果不一样?

sinat_20319421 2015-09-23 10:17:11
存储过程:
CREATE PROCEDURE workdbase.proc_get_cjdwsqtree(IN p_dwbm VARCHAR(255), OUT p_errmsg VARCHAR(4000))
SQL SECURITY INVOKER
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND SET p_errmsg = '查询数据错误!';
IF(p_dwbm='100000')THEN
SELECT NULL AS COUNT, -1 AS CJBM,NULL AS CJFBM,"所有" AS CJMC FROM dual
UNION ALL
SELECT NULL AS COUNT, "BS" AS CJBM,-1 AS CJFBM,"BS插件" AS CJMC FROM dual
UNION ALL
SELECT NULL AS COUNT, "CS" AS CJBM,-1 AS CJFBM,"CS插件" AS CJMC FROM dual
UNION ALL
SELECT count(*) as COUNT, t.CJFBLJ AS CJBM,(CASE t.CJLX WHEN "0" THEN "BS" ELSE "CS" END)AS CJFBM, t.CJMC FROM xt_cj_cjqxfp p inner join
xt_cj_cjxx t on p.CJFBLJ=t.CJFBLJ where p.SFSQ='Y' GROUP BY t.CJMC;
ELSE
SELECT NULL AS COUNT, -1 AS CJBM,NULL AS CJFBM,"所有" AS CJMC FROM dual
UNION ALL
SELECT NULL AS COUNT, "BS" AS CJBM,-1 AS CJFBM,"BS插件" AS CJMC FROM dual
UNION ALL
SELECT NULL AS COUNT, "CS" AS CJBM,-1 AS CJFBM,"CS插件" AS CJMC FROM dual
UNION ALL
SELECT IFNULL(COUNT(p.SFSQ),0) AS COUNT ,t.CJFBLJ AS CJBM,(CASE t.CJLX WHEN "0" THEN "BS" ELSE "CS" END)AS CJFBM, t.CJMC
FROM xt_cj_cjxx t
LEFT JOIN xt_cj_cjqxfp p
ON t.CJFBLJ=p.CJFBLJ
AND p.DWBM LIKE p_dwbm
AND p.SFSQ='Y'
GROUP BY t.cjfblj;
END IF;
END

C#调用存储过程的方法
 public DataTable DoExecuteDataTable(string strProcName)
{
Database db = DataAccessor.CreateDatabase();
DataTable rtnDt = new DataTable();

try
{
AddLogDebug(strProcName);
DataSet ds = db.ExecuteDataSet<KeyValueItem>(strProcName, this.KeyValue);

if (ds != null && ds.Tables.Count > 0)
{
rtnDt = ds.Tables[0];
}
}
catch (Exception ex)
{
AddLogError(strProcName, ex);
throw new Exception("数据库处理出错:" + ex.Message);
}
finally
{
this.ThrowException(strProcName);
}
return rtnDt;
}

执行存储过程的结果

C#获取到的结果


...全文
172 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_20319421 2015-09-23
  • 打赏
  • 举报
回复
引用 1 楼 sinat_20319421 的回复:
为什么count这列全部变成0了?在线等啊!
我是在dt里面取出来的值就是上面那样的
道玄希言 2015-09-23
  • 打赏
  • 举报
回复
額, 不对, 我弄错了。。。 上帖都改不了。 哎。。。
道玄希言 2015-09-23
  • 打赏
  • 举报
回复
你这个在C# 里面显示出来的情况,应该是 dataGridView1 控件的字段外观属性中,將空数据默认成了 0 吧。
sinat_20319421 2015-09-23
  • 打赏
  • 举报
回复
为什么count这列全部变成0了?在线等啊!

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧