Foxtable(狐表)用户栏目专家坐堂 → [求助]同一个存储过程,直接执行与项目中调用得出的结果不一致?


  共有3127人关注过本帖树形打印复制链接

主题:[求助]同一个存储过程,直接执行与项目中调用得出的结果不一致?

帅哥哟,离线,有人找我吗?
无我是天机
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:233 积分:2602 威望:0 精华:0 注册:2013/9/2 23:31:00
[求助]同一个存储过程,直接执行与项目中调用得出的结果不一致?  发帖心情 Post By:2021/3/4 11:53:00 [只看该作者]

请教一下各位老师:我写了一个存储过程(SQL SERVER 2016),数据库中直接执行是有记录返回的但是项目中调用时没有记录返回也没错误提示?谢谢!(论坛发帖好像无法直接贴代码,我上传了代码截图)

图片点击可在新窗口打开查看此主题相关图片如下:代码1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:代码2.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:代码3.jpg
图片点击可在新窗口打开查看



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/4 12:10:00 [只看该作者]

看不出什么问题。

temp_pjcom是一个临时表?

 回到顶部
帅哥哟,离线,有人找我吗?
无我是天机
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:233 积分:2602 威望:0 精华:0 注册:2013/9/2 23:31:00
  发帖心情 Post By:2021/3/4 12:21:00 [只看该作者]

不是,正常的表

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/4 13:34:00 [只看该作者]

导出部分表格数据和代码发上来测试一下

 回到顶部
帅哥哟,离线,有人找我吗?
无我是天机
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:233 积分:2602 威望:0 精华:0 注册:2013/9/2 23:31:00
  发帖心情 Post By:2021/3/4 15:50:00 [只看该作者]

数据已上传
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test.rar


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/4 16:45:00 [只看该作者]

测试了一下,应该是一个bug,存储过程如果有插入或者更新的代码,cmd.ExecuteReader无法返回表格数据 。

已反馈

 回到顶部
帅哥哟,离线,有人找我吗?
无我是天机
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:233 积分:2602 威望:0 精华:0 注册:2013/9/2 23:31:00
  发帖心情 Post By:2021/3/4 17:19:00 [只看该作者]

谢谢蓝老师。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/5 9:22:00 [只看该作者]

开发人员经过详细测试,确定这个是.net的oledb驱动自身的bug,暂时没有办法处理。

目前解决方法是:
1、分2步,把返回表格数据的sql提取出来,另外执行,也就是先执行存储过程更改数据,在另外执行sql返回表格数据
2、使用其它.net数据库驱动处理,比如:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=159738&replyID=&skin=1,测试代码

Dim db = HySql.DataBaseFactory.CreateDatabase()     
Dim dt As System.Data.DataTable = db.ExecuteDataSet(System.Data.CommandType.StoredProcedure, "p_F_AUTHNS",HySql.ParameterPair.GetPair("BUSERID", "1234567")).Tables(0)      

MessageBox.show("Count=" & dt.Rows.Count)
If dt.rows.count > 0 Then 
    'MessageBox.Show("kk")
    Tables("fr_test_Tblselect").DataSource = dt
Else
    'MessageBox.Show("123")
End If

 回到顶部
帅哥哟,离线,有人找我吗?
无我是天机
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:233 积分:2602 威望:0 精华:0 注册:2013/9/2 23:31:00
  发帖心情 Post By:2021/3/5 12:03:00 [只看该作者]

蓝老师,如果我采用第二种方案,是不是项目中所有调用SQL语句的代码都要按照新语法进行修改?还是说仅仅在调用有插入、更新的存储过程的地方用新语法就行?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/5 12:10:00 [只看该作者]

在调用有插入、更新的存储过程的地方用新语法就行。其实我更建议使用第一种方法,多访问一次数据库而已

 回到顶部