加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver 临时表应用 范例

发布时间:2020-12-12 15:03:27 所属栏目:MsSql教程 来源:网络整理
导读:-- ============================================= -- Description:? -- Author:?? -- Create date: -- ============================================= CREATE PROCEDURE [dbo].[pro_get_parts_list] ?@IN_MODEL_CD1 NVARCHAR(5),???? ?@IN_MODEL_CD2 NVAR

-- =============================================
-- Description:?<>
-- Author:??<>
-- Create date: <>
-- =============================================

CREATE PROCEDURE [dbo].[pro_get_parts_list]
?@IN_MODEL_CD1 NVARCHAR(5),????
?@IN_MODEL_CD2 NVARCHAR(10),???
??? @IN_LOT INTEGER????????????????????????
AS

BEGIN

?SET NOCOUNT ON;

?DECLARE?@CTMP_BLOCK_NO? INTEGER??????
?DECLARE?@CTMP_LINE_NO?? INTEGER??????
?DECLARE?@CTMP_LINE_BRANCH_NO INTEGER?
?DECLARE?@CTMP_DRAW_CD1 NVARCHAR(5)???
?DECLARE?@CTMP_DRAW_CD2 NVARCHAR(10)??
?DECLARE?@CTMP_ORDER_FLG NVARCHAR(1)??

?DECLARE @iCount INT=0
?DECLARE @iLoop INT=1
?
?IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '#TMP_M_PARTSLIST')
?DROP TABLE #TMP_M_PARTSLIST
?
?CREATE TABLE #TMP_M_PARTSLIST (
??????? ID INT IDENTITY(1,1)
???????,BLOCK_NO???? INT?NOT NULL???
???????,LINE_NO??INT??NOT NULL
???????,LINE_BRANCH_NO?INT??NOT NULL
???????,DRAW_CD1?NVARCHAR(5)???????????
???????,DRAW_CD2?NVARCHAR(10)????????
???????,USE_QUANTITY??NUMERIC(15,4)?
???????,LEVEL???INT?? ?
???????,ORDER_FLG????? TINYINT?
???????,ASSY_PLACE???TINYINT?
???????,ASSYNO??NVARCHAR(8)?
???????,FACTORY_KBN TINYINT??
???????,DEL_PLACE NVARCHAR(20)
???????,SHOW_FLG TINYINT
???????,CONSTRAINT pk_tmp_m_partslist PRIMARY KEY (
??????????BLOCK_NO
??????????,LINE_NO
??????????,LINE_BRANCH_NO
??????????)
?????????????????????????? )

?INSERT INTO #TMP_M_PARTSLIST WITH(TABLOCK)
?SELECT
?? BLOCK_NO
??,LINE_NO
??,LINE_BRANCH_NO
??,NULL
??,NULL
?FROM(
?SELECT
?T1.BLOCK_NO AS BLOCK_NO,
?T1.LINE_NO AS LINE_NO,
?T1.LINE_BRANCH_NO AS LINE_BRANCH_NO
?FROM T_PART_CONS_HISTORY AS T1
?WHERE 1=1
?AND T1.MODEL_CD1 = @IN_MODEL_CD1
?AND T1.MODEL_CD2 = @IN_MODEL_CD2
?AND T1.PRC_KBN <> '3'
?UNION
?SELECT
?T2.BLOCK_NO AS BLOCK_NO,
?T2.LINE_NO AS LINE_NO,
?T2.LINE_BRANCH_NO AS LINE_BRANCH_NO
?FROM M_ORDERTRANS AS T2
?WHERE 1=1
?AND T2.MODEL_CD1 = @IN_MODEL_CD1
?AND T2.MODEL_CD2 = @IN_MODEL_CD2
??? ) AS T
???
?SELECT @iCount=MAX(ID) FROM #TMP_M_PARTSLIST

?WHILE @iLoop <= @iCount
?BEGIN
????? print '@iLoop:'+convert(nvarchar,@iLoop)
???
???SELECT
???@CTMP_BLOCK_NO= BLOCK_NO,
???@CTMP_LINE_NO=LINE_NO,
???@CTMP_LINE_BRANCH_NO=LINE_BRANCH_NO
???FROM #TMP_M_PARTSLIST WHERE ID=@iLoop

???SET @iLOOP = @iLOOP + 1

????????? UPDATE #TMP_M_PARTSLIST
????????? SET
????????? ? DRAW_CD1=@TMP_DRAW_CD1
????,DRAW_CD2=@TMP_DRAW_CD2
????,USE_QUANTITY=@TMP_USE_QTY
????,LEVEL=@TMP_LEVEL
????,ORDER_FLG=@TMP_ORDER_FLG
????,ASSY_PLACE=@TMP_ASSY_PLACE
????,ASSYNO=@TMP_ASSY_NO
????,FACTORY_KBN=@TMP_FACTORY_KBN
????,DEL_PLACE=@TMP_DEL_PLACE
????,SHOW_FLG=1
????WHERE 1=1
????AND BLOCK_NO = @CTMP_BLOCK_NO
????AND LINE_NO = @CTMP_LINE_NO
????AND LINE_BRANCH_NO = @CTMP_LINE_BRANCH_NO

?END

??? TRUNCATE TABLE #TMP_M_PARTSLIST ?IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '#TMP_M_PARTSLIST')?DROP TABLE #TMP_M_PARTSLISTEND

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读