create proc xxxx 
as 
DECLARE @ERRCODE INTEGER
SET @ERRCODE=10000
DECLARE @RETURN INTEGER               /*返回结果的初始化*/
SET @RETURN=0DECLARE @TRAN_POINT INT --控制事务嵌套
SET @TRAN_POINT=@@TRANCOUNT --保存事务点
IF @TRAN_POINT=0
 BEGIN TRAN TRAN_LS_DJ
ELSE
 SAVE TRAN TRAN_LS_DJ
/*生成一组最长9位的随机数字 */
 DECLARE @ID FLOAT,@XLH CHAR(10)
 SET @ID=RAND()
 SELECT @XLH=CAST (@ID*1000000000 AS INT)SELECT B.XULH,B.RIQI,LTRIM(RTRIM(B.XULH))+LTRIM(RTRIM(@XLH)) AS CJXLH,A.SDID
 INTO #TMP_MX  
 FROM TABLE1 A ,TABLE2 B   
 WHERE A.XULH=B.XULHINSERT INTO MX
(XULH,RIQI,CJXLH,SDID)
SELECT  XULH,RIQI,CJXLH,SDID  FROM #TMP_RETMXLSSELECT B.XULH,B.RIQI,LTRIM(RTRIM(B.XULH))+LTRIM(RTRIM(@XLH)) AS CJXLH
 INTO #TMP_HZ 
 FROM TABLE1 A ,TABLE2 B   
 WHERE A.XULH=B.XULHINSERT INTO HZ
(XULH,RIQI,CJXLH)
SELECT  XULH,RIQI,CJXLH  FROM #TMP_HZIF @TRAN_POINT=0
   COMMIT TRAN TRAN_LS_DJ
GOTO RETURN_LAB
ERR_LAB:
  IF @RETURN<100  SET @RETURN=@ERRCODE +@RETURN
ROLLBACK TRAN TRAN_LS_DJ
RETURN_LAB:  RETURN @RETURN
其中XULH 的值有可能会有重复的 并且这个过程每隔2秒钟执行一次 基本保证每次执行的时候 只有一笔数据结果发现 在HZ表 和MX 表 两表中存在 XULH相等 而CJXLH不相等的情况  请问各位大侠 这是怎么回事啊
现在的情况是 我在做统计的时候  关联xulh cjxlh时有 上述情况 数据就会不显示 造成数据不准确

解决方案 »

  1.   

    怎么没人 回啊, 我在来解释一遍啊
     就是说 在同一个事务中  我定义了 declare @cjxlh char(10) 并给@cjxlh 定义了值
       我执行的两组 INSERT 语句  insert table1 (cjxlh) select @cjxlh 
                              insert table2 (cjxlh) select @cjxlh   
          所插入table1 和table2表中的cjxlh值不一样啊
          应该是一样的啊?  大家能帮忙解答一下啊
      

  2.   

    HZ 和MX 两表这个列类型长度一样吗
      

  3.   

    INSERT INTO MX 
    (XULH,RIQI,CJXLH,SDID) 
    SELECT  XULH,RIQI,CJXLH,SDID  FROM #TMP_RETMXLS 
    这块的#TMP_RETMXLS ?写错了?
      

  4.   

    答复楼上的
    3楼:2表此字段的类型和长度都是一样的
    4楼:不是以前的老数据,都是新数据
    5楼:
    INSERT INTO MX 
    (XULH,RIQI,CJXLH,SDID) 
    SELECT  XULH,RIQI,CJXLH,SDID  FROM #TMP_MX 是这样的 我写帖子的时候 写错了
    请各位老大 指点