深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 575|回复: 0
打印 上一主题 下一主题

动态分配值的参考

[复制链接]

5

主题

7

帖子

61

积分

注册会员

Rank: 2

积分
61
跳转到指定楼层
楼主
发表于 2019-5-15 17:33:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. CREATE OR REPLACE PROCEDURE SFIS1.MANTIS_ASSIGNKEY (dsn   IN     VARCHAR2,
  2.                                                     res      OUT VARCHAR2)
  3. IS
  4.    hdcptemp        VARCHAR2 (100);
  5.    hdcpupdate      VARCHAR2 (100);
  6.    nerokeytemp     VARCHAR2 (100);
  7.    nerokeyupdate   VARCHAR2 (100);
  8.    counttemp       NUMBER;
  9.    modeltype       VARCHAR2 (20);
  10.    myrow           ROWID;
  11. CURSOR getdata
  12.   IS
  13.    SELECT ROWID
  14.                       FROM sfism4.r_mantis_hdcp1_t
  15.                       WHERE serial_number IS NULL  and rownum<100 ORDER BY DBMS_RANDOM.VALUE   ;   
  16. CURSOR getdata2
  17.   IS
  18.    SELECT ROWID
  19.                       FROM sfism4.R_mantis_WV_T
  20.                       WHERE serial_number IS NULL  and rownum<100 ORDER BY DBMS_RANDOM.VALUE   ;                        
  21. BEGIN
  22.    BEGIN
  23.       SELECT model_type
  24.         INTO modeltype
  25.         FROM sfis1.c_model_desc_t
  26.        WHERE model_name = (SELECT model_name
  27.                              FROM sfism4.r107
  28.                             WHERE serial_number = dsn AND ROWNUM = 1);
  29.    EXCEPTION
  30.       WHEN NO_DATA_FOUND
  31.       THEN
  32.          res := 'NO SN OR NO MODEL_TYPE.';
  33.          GOTO endproc;
  34.    END;


  35.    --mantis--

  36.    IF INSTR (modeltype, '221') > 0
  37.    THEN
  38.       SELECT COUNT (1)
  39.         INTO counttemp
  40.         FROM sfism4.r_mantis_hdcp1_t
  41.        WHERE serial_number = dsn;

  42.       IF counttemp < 1
  43.       THEN
  44.         <<mantis_hdcp1>>
  45.         /*
  46.          BEGIN
  47.             SELECT ROWID
  48.               INTO myrow
  49.               FROM (SELECT ROWID
  50.                       FROM sfism4.r_mantis_hdcp1_t
  51.                      WHERE serial_number IS NULL
  52.                      )--AND status IS NULL -- ORDER BY hdcp
  53.              WHERE ROWNUM = 1;
  54.          EXCEPTION
  55.             WHEN NO_DATA_FOUND
  56.             THEN
  57.                res := 'NO HDCP1 FOR ASSIGN.';
  58.                GOTO endproc;
  59.          END;*/
  60.        OPEN getdata;
  61.        FETCH getdata  INTO myrow;
  62.        IF getdata%NOTFOUND   THEN
  63.               res := 'NO HDCP1 FOR ASSIGN.';
  64.                GOTO endproc;
  65.        ELSE
  66.           NULL;
  67.        END IF;
  68.        CLOSE getdata;
  69.          
  70.          BEGIN
  71.             SELECT ROWID
  72.               INTO myrow
  73.               FROM sfism4.r_mantis_hdcp1_t
  74.              WHERE  ROWID = myrow
  75.              AND serial_number IS NULL
  76.             FOR UPDATE;
  77.          EXCEPTION
  78.             WHEN NO_DATA_FOUND
  79.             THEN
  80.                GOTO mantis_hdcp1;
  81.          END;
  82.           --  dbms_output.put_line('22');
  83.          UPDATE sfism4.r_mantis_hdcp1_t
  84.             SET serial_number = dsn, status = 'PREPARE'
  85.           WHERE ROWID = myrow AND serial_number IS NULL;

  86.          COMMIT;
  87.          
  88.         SELECT COUNT (1)
  89.         INTO counttemp
  90.         FROM sfism4.r_mantis_hdcp1_t
  91.        WHERE serial_number = dsn;
  92.         if(counttemp=0)then
  93.                 GOTO mantis_hdcp1;
  94.         end if;
  95.          
  96.       END IF;

  97.       SELECT COUNT (1)
  98.         INTO counttemp
  99.         FROM sfism4.R_mantis_WV_T
  100.        WHERE serial_number = dsn;

  101.       IF counttemp < 1
  102.       THEN
  103.         <<MANTIS_WV>>
  104.         /* BEGIN
  105.             SELECT ROWID
  106.               INTO myrow
  107.               FROM (SELECT ROWID
  108.                       FROM sfism4.R_mantis_WV_T
  109.                      WHERE serial_number IS NULL
  110.                      )--AND status IS NULL -- ORDER BY hdcp
  111.              WHERE ROWNUM = 1;
  112.          EXCEPTION
  113.             WHEN NO_DATA_FOUND
  114.             THEN
  115.                res := 'NO WV KEY for assign.';
  116.                GOTO endproc;
  117.          END;*/
  118.            OPEN getdata2;
  119.            FETCH getdata2  INTO myrow;
  120.            IF getdata2%NOTFOUND   THEN
  121.                      res := 'NO WV KEY for assign.';
  122.                    GOTO endproc;
  123.            ELSE
  124.               NULL;
  125.            END IF;
  126.            CLOSE getdata2;         

  127.          BEGIN
  128.             SELECT ROWID
  129.               INTO myrow
  130.               FROM sfism4.R_mantis_WV_T
  131.              WHERE ROWID = myrow
  132.             AND  serial_number IS NULL  
  133.             FOR UPDATE;
  134.          EXCEPTION
  135.             WHEN NO_DATA_FOUND
  136.             THEN
  137.                GOTO MANTIS_WV;
  138.          END;

  139.          UPDATE sfism4.R_mantis_WV_T
  140.             SET serial_number = dsn, status = 'PREPARE'
  141.           WHERE  ROWID = myrow AND serial_number IS NULL;
  142.          
  143.          COMMIT;
  144.          
  145.         SELECT COUNT (1)
  146.         INTO counttemp
  147.         FROM sfism4.R_mantis_WV_T
  148.        WHERE serial_number = dsn;
  149.         if(counttemp=0)then
  150.                 GOTO MANTIS_WV;
  151.         end if;
  152.          
  153.       END IF;

  154.       res := 'OK';
  155.       GOTO endproc;
  156.    END IF;

  157.   <<endproc>>
  158.    counttemp := 0;
  159. END;
  160. /
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-5 03:17 , Processed in 0.023397 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表