/*SQL原存储过程如下。*/
CREATE PROCEDURE XTNShowPartTableTree
  @UpCode CHAR(40)
AS
SELECT UpCode, DCode, DName, DItem, DStyle, DRe INTO #Temp1 FROM XtdetamsAll_Detail WHERE UpCode IS NULL
SELECT UpCode INTO #Temp2 FROM XtdetamsAll_Detail WHERE UpCode IS NULL
INSERT #Temp2 VALUES(@UpCode)
SELECT UpCode INTO #Temp3 FROM XtdetamsAll_Detail WHERE UpCode IS NULL
declare @CNumb SMALLINT
SET @CNumb = 0
WHILE (EXISTS (SELECT UpCode FROM #Temp2))
BEGIN
  INSERT #Temp1 SELECT UpCode, DCode, DName, DItem, DStyle, DRe FROM XtdetamsAll_Detail WHERE UpCode IN (SELECT UpCode FROM #Temp2)
  TRUNCATE TABLE #Temp3
  INSERT #Temp3 SELECT UpCode FROM #Temp2
  TRUNCATE TABLE #Temp2
  INSERT #Temp2 SELECT DISTINCT DCode AS UpCode FROM XtdetamsAll_Detail WHERE DCode<>'' AND UpCode IN (SELECT UpCode FROM #Temp3)
  SET @CNumb = @CNumb + 1
  IF @CNumb = 18
  BEGIN
    RAISERROR ('产品结构可能出现循环装配,产生错误。', 16, 1)
    RETURN
  END
END
SELECT DISTINCT A.* INTO #Temp4 FROM #Temp1 AS A, XtdetamsAll_Title AS B
WHERE A.DCode *= B.TCode ORDER BY UpCode, DItem
SELECT A.*, B.BegTime,B.EndTime,B.IsVirtual,B.IsNecessary,B.IsClass FROM #Temp4  AS A ,XTBOM. dbo.XTNPartExternAtti  AS B WHERE (A.DCode*=B.PartCode) ORDER BY UpCode, DItemGO