以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 为什么储存过程中的update仅执行了第一条 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=144171) |
||||
-- 作者:happyft -- 发布时间:2019/12/12 16:51:00 -- 为什么储存过程中的update仅执行了第一条
附件是储存过程的语句,前台调用执行时只有第一个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语句,是什么原因? 谢谢! |
||||
-- 作者:有点蓝 -- 发布时间:2019/12/12 17:03:00 -- 这种代码我没有办法看的,也看不出什么。到SqlServer里面执行有没有问题? |
||||
-- 作者:HappyFt -- 发布时间: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 前台这样调用也没有什么问题啊 |
||||
-- 作者:有点蓝 -- 发布时间:2019/12/12 17:19:00 -- 我看不出是什么原因 |
||||
-- 作者:HappyFt -- 发布时间:2019/12/13 9:18:00 -- 唉,原来不是update没有执行,而是最后一个语句又把更新的数据清空了, IF @cklb = \'原材料仓\' BEGIN ..... END IF @cklb = \'成品仓\' BEGIN ..... END ELSE BEGIN ..... END 现在问题是,上面第一个if执行了,为什么最下面的Else后面的语句也执行了,else应该是上面的if都没执行才执行的啊? 难道储存过程中不能用这样的结构? |
||||
-- 作者:有点蓝 -- 发布时间:2019/12/13 9:28:00 -- IF @cklb = \'原材料仓\' BEGIN ..... END ELSE IF @cklb = \'成品仓\' BEGIN ..... END ELSE BEGIN ..... END 粉色这段被当做一个整体了 |