Foxtable(狐表)用户栏目专家坐堂 → 为什么储存过程中的update仅执行了第一条


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

主题:为什么储存过程中的update仅执行了第一条

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


加好友 发短信
等级:八尾狐 帖子:1909 积分:16993 威望:0 精华:0 注册:2014/7/29 19:09:00
为什么储存过程中的update仅执行了第一条  发帖心情 Post By:2019/12/12 16:51:00 [只看该作者]

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


附件是储存过程的语句,前台调用执行时只有第一个update语句会执行,后面都不执行了

但我重新建立一个sql的查询,完全一样的语句,我把要传递的参数设置为常量后测试
DECLARE @ck NVARCHAR(16) ,
    @strID NVARCHAR(16) ,
    @dateS NVARCHAR(16) ,
    @dateE NVARCHAR(16);
      
SET @ck = '0108汽配原材料仓';
SET @strID = 'pd1911-020';
SET @dateS = '2019-10-31';
SET @dateE = '2019-11-30';

下面都是与储存过程完全相同的代码
在这个查询中又能正确执行所有的update语句,是什么原因?

谢谢!






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


加好友 发短信
等级:超级版主 帖子:107014 积分:544295 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/12 17:03:00 [只看该作者]

这种代码我没有办法看的,也看不出什么。到SqlServer里面执行有没有问题?

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


加好友 发短信
等级:八尾狐 帖子:1909 积分:16993 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2019/12/12 17:10:00 [只看该作者]

没有问题,不用祥细看,我只是想问什么原因才会导致只有第一条update语句执行

Dim tbl As Table = Tables("盘点表_主表")
Dim tbl2 As Table  = Tables("盘点表_明细")
Dim pr As Row = tbl.Current
If pr IsNot Nothing Then 
    Dim ds,de As Date
    Dim ck,strID As String
    ck = pr("仓库")
    strID = pr("盘点编号")
    ds = pr("上次盘点日期")
    de = pr("盘点日期")
    Dim cklb2 As String
    Dim cmd As New SQLCommand
    cmd.ConnectionName = Mydata
    cmd.CommandText = "Exec usp_pd_price '" & ck & "', '" & strID & "','" & ds & "','" & de & "'" 
    cmd.ExecuteNonQuery
end if

前台这样调用也没有什么问题啊

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


加好友 发短信
等级:超级版主 帖子:107014 积分:544295 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/12 17:19:00 [只看该作者]

我看不出是什么原因

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


加好友 发短信
等级:八尾狐 帖子:1909 积分:16993 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2019/12/13 9:18:00 [只看该作者]

唉,原来不是update没有执行,而是最后一个语句又把更新的数据清空了,
 IF @cklb = '原材料仓'
      BEGIN 
      .....
      END
 IF @cklb = '成品仓'
     BEGIN 
      .....
      END
 ELSE
      BEGIN 
      .....
      END
现在问题是,上面第一个if执行了,为什么最下面的Else后面的语句也执行了,else应该是上面的if都没执行才执行的啊?
难道储存过程中不能用这样的结构?


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


加好友 发短信
等级:超级版主 帖子:107014 积分:544295 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/13 9:28:00 [只看该作者]

IF @cklb = '原材料仓'
      BEGIN 
      .....
      END
ELSE IF @cklb = '成品仓'
     BEGIN 
      .....
      END
 ELSE
      BEGIN 
      .....
      END

粉色这段被当做一个整体了

 回到顶部