Oracle 游标

CREATE OR REPLACE PROCEDURE SFIS1.CHECK_START_LINE_SMT_MO(MO IN VARCHAR2,LINE IN VARCHAR2,
RES OUT VARCHAR2) IS

C_MODEL_NAME   VARCHAR2(25);
C_COUNT        NUMBER;
C_COUNT1       NUMBER;
C_MO_NUMBER    VARCHAR2(25);
MIN_TRACK      VARCHAR2(16);
MAX_TRACK      VARCHAR2(16);
V_FEEDER       VARCHAR2(16);
COUNT_MACHINE  NUMBER;


V_MACHINE_CODE SFISM4.R_SMT_LOG_T.MACHINE_CODE%TYPE;
--V_MACHINE_CODE VARCHAR2(32);

CURSOR FIND_MACHINE IS
       SELECT DISTINCT MACHINE_CODE --V_MACHINE_CODE
       FROM SFIS1.C_SMT_BOM_T
       WHERE BOM_NO IN (SELECT BOM_NO
                     FROM SFISM4.R_SMT_PROD_BOM_T
               WHERE PRODUCT_NO = C_MODEL_NAME AND
               LINE_NAME = LINE);

   
BEGIN
    RES := 'OK';
 
    SELECT MODEL_NAME ,MO_NUMBER INTO C_MODEL_NAME,C_MO_NUMBER
 FROM SFISM4.R_MO_BASE_T
 WHERE MO_NUMBER=MO;
 
   
    --CHECK ???
    SELECT COUNT(FEEDER_NO) INTO C_COUNT FROM SFIS1.C_SMT_BOM_T
    WHERE  FEEDER_NO ='000'
     AND   BOM_NO  IN (SELECT BOM_NO
                     FROM SFISM4.R_SMT_PROD_BOM_T
               WHERE PRODUCT_NO = C_MODEL_NAME AND
               LINE_NAME = LINE);
                                 
    IF C_COUNT>=1 THEN
    SELECT COUNT(*) INTO C_COUNT1 FROM
    (
       SELECT MACHINE_CODE,FEEDER_NO,KEY_PART_NO
         FROM SFISM4.R_SMT_LOG_T
       WHERE  PRODUCT_NO=C_MODEL_NAME
         AND  FEEDER_NO='000'
         AND  LINE_NAME=LINE
         AND  WORK_TIME <= SYSDATE
         AND  END_TIME >= SYSDATE
       GROUP  BY MACHINE_CODE,FEEDER_NO,KEY_PART_NO
     )A;
       IF C_COUNT1<>C_COUNT THEN
          RES:=LINE||'???????? ';
          RETURN;
       END IF;
    END IF;
   
    --END CHECK ???
   
   
 OPEN FIND_MACHINE;
    LOOP
        FETCH FIND_MACHINE INTO V_MACHINE_CODE;
        EXIT WHEN FIND_MACHINE%NOTFOUND;

 
  SELECT COUNT(*) INTO COUNT_MACHINE
  FROM SFISM4.R_SMT_LOG_T
  WHERE PRODUCT_NO = C_MODEL_NAME AND
              LINE_NAME = LINE AND
           MACHINE_CODE = V_MACHINE_CODE AND
           WORK_TIME <= SYSDATE AND
           END_TIME >= SYSDATE;
    IF COUNT_MACHINE <= 0 THEN
       RES := V_MACHINE_CODE||' NO DATA';
    EXIT;
    END IF;      
 
  SELECT MIN(BEGIN_TRACK),MAX(END_TRACK) INTO MIN_TRACK,MAX_TRACK
        FROM SFIS1.C_SMT_MACHINE_TABLE_T
        WHERE MACHINE_CODE=V_MACHINE_CODE AND
              TABLE_SIDE IN (SELECT DISTINCT SIDE FROM SFISM4.R_SMT_LOG_T
                             WHERE PRODUCT_NO = C_MODEL_NAME AND
                                   LINE_NAME = LINE AND
                                MACHINE_CODE = V_MACHINE_CODE AND
                                WORK_TIME <= SYSDATE AND
                                END_TIME >= SYSDATE );
   
     SELECT COUNT(DISTINCT FEEDER_NO) INTO C_COUNT
        FROM SFIS1.C_SMT_BOM_T
        WHERE BOM_NO IN (SELECT BOM_NO
                      FROM SFISM4.R_SMT_PROD_BOM_T
                WHERE PRODUCT_NO = C_MODEL_NAME AND
                LINE_NAME = LINE) AND
              MACHINE_CODE = V_MACHINE_CODE AND
           FEEDER_NO >= MIN_TRACK AND
           FEEDER_NO <= MAX_TRACK AND
           FEEDER_NO NOT IN (SELECT DISTINCT FEEDER_NO
                             FROM SFISM4.R_SMT_LOG_T
              WHERE PRODUCT_NO = C_MODEL_NAME AND
                    MACHINE_CODE = V_MACHINE_CODE AND
                                WORK_TIME <= SYSDATE AND
                                END_TIME >= SYSDATE );
         
      IF C_COUNT>0 THEN
       SELECT DISTINCT FEEDER_NO INTO V_FEEDER
             FROM SFIS1.C_SMT_BOM_T
             WHERE BOM_NO IN (SELECT BOM_NO
                           FROM SFISM4.R_SMT_PROD_BOM_T
                     WHERE PRODUCT_NO = C_MODEL_NAME AND
                     LINE_NAME = LINE) AND
                   MACHINE_CODE = V_MACHINE_CODE AND
                FEEDER_NO >= MIN_TRACK AND
                FEEDER_NO <= MAX_TRACK AND
                FEEDER_NO NOT IN (SELECT DISTINCT FEEDER_NO
                                 FROM SFISM4.R_SMT_LOG_T
                  WHERE PRODUCT_NO = C_MODEL_NAME AND
                        MACHINE_CODE = V_MACHINE_CODE AND
                                       WORK_TIME <= SYSDATE AND
                                       END_TIME >= SYSDATE ) AND
          ROWNUM = 1;
          RES:='NO '||V_MACHINE_CODE||'/'||V_FEEDER;
       EXIT;
           END IF;
 END LOOP;
    CLOSE FIND_MACHINE;

EXCEPTION

   WHEN OTHERS THEN
      RES:='SMT SCAN ERR ';

END;
/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-706819/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-706819/

oracle: 游标,父游标,子游标,游标相关视图 1       PL/SQL(Procedural language /SQL) PL/SQL是一种程序语言。 是过程化的SQL语言。Procedurallanguage /SQL 是oracle数据库对SQL语言的扩展。 在普通的SQL上增加了编程语言的特点。 可以把数据操作和查询语句组织在PL/SQL代码的过程性单元中,以实现复杂的功能   2       游标(cu 阅读详情

相关推荐

Oracle隐式游标/显示游标

在通过select语句查询是,返回的结果通常是多行记录组成的集合。为此SQL提供了游标机制。游标可以充当指针的作用,使应用程序设计语言一次只能处理查询记过中的一行。在Oracle中,可以使用隐式和显示两种游标。在pl/sql 中程序所有发出的DML和select语句,Oracle都会自动声明“隐式游标”。为了处理由select语句返回的一组记录,需要在pl/sql程序中申明和处理“显示游标”。

zengzan131的博客 1086

dbms_stats_all

#!/bin/bash export ORACLE_SID=umlautexport ORACLE_HOME=/u01/product/oracleexport PATH=$ORACLE_HOME/bin:$PATH$ORAC...

congkuang7197的博客 92

Catia二次开发QueryInterface的操蛋问题

探索了很久,尝试录制宏,打开部件属性窗口,然后随意设置一些属性(必须改变一些东西才能录制成功,否则不会录制到任何东西),再看录制的结果,发现原来CATIAAnalyze是从Product那里来的。例如获得一个部件的体积,找到相关接口CATIAAnalyze,但是这个部件的CATIAAnalyze的对象不知道如何获取。总结一下,写Catia二开代码,就像漂亮国那款《莫里秀》 又名《爸爸死哪了》的综艺节目,大部分时间都是在找爸爸!Catia二开很痛苦,明明已经找到接口类,但是却不知道怎么获得这个接口类的对象。

gergul的专栏 747

ORACLE游标详解

Oracle游标

JF的博客 1万+

【2021末九软工边缘人保研】川大-中科院网络中心-华师夏令营+哈工大本-中科院网络中心-西交-厦大-中山-武大-北航预推免

2021末九软工边缘人保研记录一、写在前面二、个人背景 一、写在前面 2020年计算机保研可谓是诸神黄昏,卷的头破血流(指我等菜鸡)。疫情的原因,今年的夏令营和预推免基本全部改为线上,机试取消,能不能拿到offer基本完全取决于背景以及面试表现(当然也有个别头铁非要机试,甚至笔试的学校)。大佬们offer收割不停,我等边缘人只能看着一封封拒信发呆。 这种情况下,只有985 Rank5%以及211 Rank2%之前的大佬能够较为轻松地拿到面试入场券。贴一个上交电院夏令营要求你们感受一下: 预推免相比起夏令营

weixin_43222706的博客 4235

手教你如何使用Simulink和相关工具箱模拟和实现无人机的多机接力信号中继的建模

扩大通信范围:单架无人机的通信能力有限,通过多机接力的方式可以显著扩展通信覆盖范围。提高可靠性:当某架无人机出现故障或电量不足时,其他无人机可以接管其任务,确保通信不中断。适应复杂环境:在山区、森林等复杂地形中,多机接力可以绕过障碍物,建立稳定的通信链路。使用Communications Toolbox中的模块来模拟无线通信链路。例如,可以使用模块模拟噪声信道,或者使用模块计算信号衰减。matlab深色版本。

MHD0815的博客 767

oracle 游标 定义,Oracle游标

2019-05-13游标(cursor)能够根据查询条件从数据表中提取一组记录,将其作为一个临时表置于数据缓冲区中,利用指针逐行对记录数据进行操作。隐式游标在执行SQL语句时,Oracle会自动创建隐式游标,该游标是内存中处理该语句的数据缓冲区,存储了执行SQL语句的结果。通过隐式游标属性可获知SQL语句的执行状态信息。 %found:布尔型属性,如果sql语句至少影响到一行数据,值为tru...

weixin_42453050的博客 1928

FileZilla Server 1.2.0 TLS证书过期问题

FileZilla Server TLS证书过期后重新生成

Wigle的备忘录 7527

Oracle游标

Oracle游标

雷神乐乐的博客 1386

abap中使用Screen painter为普通屏幕创建单选按钮组radiobutton组的过程

选择屏幕中,创建radiobutton组直接使用代码实现,如下所示 SELECTION-SCREEN BEGIN OF BLOCK BK1 WITH FRAME TITLE TEXT-001. PARAMETERS R1 RADIOBUTTON GROUP GR1. PARAMETERS R2 RADIOBUTTON GROUP GR1. PARAMETERS R3 RADIOBUTTON GR

charliefromkansas的博客 8302

GPS卫星轨道的理论和计算笔记分享

广义相对论预测,对比在时空弯曲度较大的地面上的原子钟,运行于时空弯曲度较小的卫星原子钟在地面上看起来更快,每天快约45us;反过来,当电压施加在晶体上时,晶体形状会扭曲(比如说伸长),而当晶体被施加上反向电压后,它将做相反的变形运动(比如缩短)。X轴:指向参考子午面与地球赤道的一个交点;从北黄极上方观察,地球北极在空间的运动轨迹是一个近似于以北黄极为中心的顺时针方向旋转的圆周,圆周半径等于。从上万年周期看,地球北极绕北黄极做大圆周运动,而从几年的短期来看,北极又在某一点处做局部的小幅椭圆运动。

m0_57139844的博客 2004

Oracle中游标的使用

Oracle中游标的使用 游标可以看成是指向一个查询结果集的指针,通过游标的移动逐行提取每一行的记录 可以让开发者一次访问一行结果集,在每条结果集上作操作。游标的作用如下: (1)指定结果集中特定行的位置; (2)基于当前的结果集位置检索一行或连续的几行; (3)在结果集的当前位置修改行中的数据; (4)以编程的方式访问数据库。 由于程序语言是面向记录的,一组变量一次只能存放一个变量或者一条记录...

睿思达DBA 2377

[LVGL]:MACOS下使用LVGL模拟器

[LVGL]:MACOS下使用LVGL模拟器

LINKKEEE的博客 2456

【Oracle】游标 显式游标与隐式游标

在使用SQL语句进行查询时,获得和处理的结果是整个查询结果集,若需要进一步查询结果中的每条数据进行业务操作,仅靠SQL语句则无法实现,所以PL/SQL提出游标概念解决此类问题。 游标是一种特殊的指针,提供了对一个结果集进行逐行处理的能力。使用游标可以对结果集按行、按条件进行数据的提取、修改和删除操作。在物理结构上,游标是Oracle为用户开设的一个数据缓冲区,存放SQL语句的执行结果。 在Oracle数据库中执行的每个SQL语句都有对应的单独的游标。Oracle主要由以下两种游标类型:游标主要用于对结果集中

奥利文儿的博客 4518

37、OpenMP:并行编程的强大工具

本文详细介绍了 OpenMP 的核心功能和使用方法,包括执行环境例程、线程同步与协调机制,如关键区域、屏障、原子操作、归约子句、刷新构造和锁机制。此外,还提供了多个实践练习,涵盖矩阵乘法的并行实现、任务池与流水线模式的应用、读写锁的扩展与移植,以及客户端-服务器模式的实现与优化。通过这些内容,读者可以全面掌握 OpenMP 在并行编程中的实际应用与性能优化技巧。

www00的博客 105

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

oracle之游标

游标1、概念性问题2、游标属性3、隐式游标4、显示游标5、参数游标6、游标FOR循环7、游标变量a、强型游标b、弱型游标 1、概念性问题 概念:是指向查询结果集的一个指针 说明:Oracle会为查询语句分配一个空间,存储结果集 这块内存空间由游标来命名,通过游标来访问这块内存中存储的信息 类型:隐式游标、显示游标 有多条数据的时候用游标处理结果集 当查询的结果只有一条结果的时候可以不使用游标来处理结果,

hey,欢迎浏览我的博客,希望能给你提供帮助。 1442

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Oracle-游标

Oracle-游标

真正的大师永远怀着一颗学徒的心 2094

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

oracle游标for写法,Oracle显示游标的使用及游标for循环

本篇文章给大家介绍oracle显示游标的使用及游标for循环,当查询返回单行记录时使用隐式游标,查询返回多行记录并逐行进行处理时使用显式游标,对本文感兴趣的朋友一起学习吧下面给大家介绍在什么情况下用隐式游标,什么情况下用显示游标:1.查询返回单行记录时→隐式游标;2.查询返回多行记录并逐行进行处理时→显式游标--显示游标属性declareCURSORcur_empISSELECT*FRO...

weixin_42511769的博客 2840

Oracle游标大全

1.Oracle游标大全     SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT语句时,要与INTO子句一起使用,查询的返回值被赋予INTO子句中的变量,变量的声明是在DELCARE中。SELECT             INTO语法如下:        SELECT [DISTICT|ALL]{*|column[,column,...]}        INTO (

ansy的专栏 1万+

oracle说明游标的步骤,Oracle游标

Oracle游标Oracle游标是通过关键字CURSOR的来定义一组Oracle查询出来的数据集,类似数组一样,把查询的数据集存储在内存当中,然后通过游标指向其中一条记录,通过循环游标达到循环数据集的目的。游标的种类Oracle游标可以分为显式游标和隐式游标两种之分。显式游标:指的是游标使用之前必须得先声明定义,一般是对查询语句的结果事进行定义游标,然后通过打开游标循环获取结果集内的记录,或者可以...

weixin_30402231的博客 1171

ORACLE游标

ORACLE游标游标:容器,存放当前SQL语句影响的记录       所有DML语句都会用到游标              逐行处理影响的行数 游标       静态游标:游标与SQL语句在运行前关联       动态游标:游标与SQL语句在运行时关联游标       隐式游标:自动声明、打开、关闭,其名SQL       显式游标:       R

huangpei2008的专栏 831

oracle游标运行详解,Oracle游标的使用实例详解

大佬教程收集整理的这篇文章主要介绍了Oracle游标的使用实例详解,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。什么是游标?①从表中检索出结果集,从中每次指向一条记录进行交互的机制。②关系数据库中的操作是在完整的行集合上执行的。由 SELECT 语句返回的行集合包括满足该语句的 WHERE 子句所列条件的所有行。由该语句返回完整的行集合叫做结果集。应用程序,尤其是互动和在线应用程序...

weixin_34221599的博客 2263

oracle中使用游标,oracle中游标的使用

3.SQL%NOTFOUND布尔型 值为true表示插入、删除、更新或单行查询操作失败。4.SQL%ISOPEN布尔型DML执行过程中为真,结束后为假三,游标的使用隐式游标的使用主要就是以上的四种属性的使用,使用它们来进行一些流程控制。显示游标的声明和使用cursor cursor_name[ 参数1 参数类型,参数2,参数类型...] is select 语句;游标的使用步骤:1...

weixin_30290131的博客 1504
上一篇: Oracle直方图 (柱状图 histograms) 详解
下一篇: Oracle RAC - Oracle为什么不建议使用交叉线作为心跳线
cuixie2370
博客等级 码龄10年 16粉丝 842原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值