PB前臺視窗有15行資料,通過回圈執行該15行資料,回圈中的每一行取出圖號引數傳遞到執行SQL2008的存盤程序,在存盤程序中通過通過嵌套提取該圖號包含的下級
零部件資訊,然后INSERT到一張表中。
問題:4個人同時在PB中執行,有人15行資料對應圖號的下級資訊全部取到并INSERT成功了,有的人中間有部分圖號沒有INSERT成功,麻煩哪位高手幫看下。有時候還報鎖行程。
SQL存盤程序代碼:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[up_getpdm_bom_scwtd_new]
@strldbh VARCHAR(20),
@strzjh VARCHAR(50)
AS
SET NOCOUNT ON
--開始事務
BEGIN TRANSACTION
;
WITH temp_bom_bc(zjh,lbjth,lbjmc,sx1,wzbh,jgzsl,sumsl)
AS
( SELECT zjh,lbjth,lbjmc,sx1,wzbh,jgzsl,CAST(jgzsl as numeric(16,4)) as sumsl from wzxt.dbo.Uv_outerpdm_bom
WHERE zjh = @strzjh AND sx1 IN ('整件','部件','零件')
UNION ALL
SELECT Uv_outerpdm_bom.zjh,Uv_outerpdm_bom.lbjth,Uv_outerpdm_bom.lbjmc,Uv_outerpdm_bom.sx1,Uv_outerpdm_bom.wzbh,
Uv_outerpdm_bom.jgzsl,CAST(temp_bom_bc.sumsl * Uv_outerpdm_bom.jgzsl as numeric(16,4))
FROM temp_bom_bc
JOIN wzxt.dbo.Uv_outerpdm_bom as Uv_outerpdm_bom ON temp_bom_bc.lbjth = Uv_outerpdm_bom.zjh AND
Uv_outerpdm_bom.sx1 IN ('整件','部件','零件')
WHERE Uv_outerpdm_bom.zjh = temp_bom_bc.lbjth
)
INSERT INTO wtd_bjmx(ldbh,zjh,bjh,bjmc,lb,wzbh,jgsl,sl,zzjh)
SELECT @strldbh,temp_bom_bc.zjh,temp_bom_bc.lbjth,temp_bom_bc.lbjmc,temp_bom_bc.sx1,
temp_bom_bc.WZBH,jgzsl,sumsl*@strxqsl,@strzjh
FROM (SELECT * FROM temp_bom_bc) AS temp_bom_bc LEFT JOIN wzxt.dbo.uv_outerzl_bzk AS uv_outerzl_bzk ON uv_outerzl_bzk.wzbh =
temp_bom_bc.WZBH
WHERE temp_bom_bc.sx1 IN ('整件','部件','零件')
/*提交事務*/
COMMIT
/* 選項 */
SET NOCOUNT OFF
RETURN
uj5u.com熱心網友回復:
把存盤程序里的BEGIN TRANSACTION 和 COMMIT 注釋掉,把事務控制寫在應用程式里。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/31423.html
標籤:數據庫相關
上一篇:pb webservice SyntaxFromSQL
下一篇:求PB9記事本原始碼,謝謝!
