`

procedure_游标内循环游标匹配值

 
阅读更多
--游标 bbs 内部循环游标 C_EVENT,当匹配上值时后台打印信息
create or replace procedure insert_SCREEN_INVENTORY_LACK
as
v_1 varchar2(100);v_2 varchar2(100);v_3 varchar2(100);v_4 float;
type bbs is ref cursor;
bb bbs;
CURSOR C_EVENT is  select t.sup_code,t.item_code,t.item_status,t.quantity_lack 
from SCREEN_INVENTORY_LACK_RULE t where t.type = '报缺库存规则表'; 
p_1 SCREEN_INVENTORY_LACK_RULE.Sup_Code%TYPE;
p_2 SCREEN_INVENTORY_LACK_RULE.Item_Code%type; 
p_3 SCREEN_INVENTORY_LACK_RULE.Item_Status%type;
p_4 SCREEN_INVENTORY_LACK_RULE.Quantity_Lack%type;
v_num int; 
begin
  open bb for 
  select sup.code,item.code,ik.extend_propc1,sum(i.quantity_bu)
  from wms_inventory i left join wms_item_key ik on ik.id = i.item_key_id
    left join wms_item item on item.id = ik.item_id
    left join wms_location l on l.id = i.location_id
    left join wms_organization sup on sup.id = ik.supplier_id
    where 1=1 and l.type = 'STORAGE' 
    group by sup.code,item.code,ik.extend_propc1;
  Dbms_Output.enable(buffer_size => null);
  v_num:=0;
  loop
  fetch bb into v_1,v_2,v_3,v_4;
  exit when bb%notfound;
  
     OPEN C_EVENT;--打开游标 
       FETCH C_EVENT into p_1,p_2,p_3,p_4; --取值 
       v_num:=1;
       while C_EVENT%found and v_num=1
         Loop 
          if p_1 = v_1 and p_2=v_2 and p_3=v_3
            then
              v_num:=v_num+1;
              dbms_output.put_line('---------'||p_1||':'||p_2||':'||p_3||':'||v_num);
          end if;
          FETCH C_EVENT into p_1,p_2,p_3,p_4; --取值 
         End Loop; 
      CLOSE C_EVENT;
      dbms_output.put_line(v_1||':'||v_2||':'||v_3||':'||v_4||':'||v_num);
  end loop;
  close bb;
end;

 

分享到:
评论

相关推荐

    Oracle 游标 Oracle 游标

    如果游标已经打开,其值为`TRUE`;否则为`FALSE`。当游标不再需要时,应该使用`CLOSE`语句将其关闭,释放资源。 #### 事务控制 在PL/SQL中执行DML语句时,通常需要显式地管理事务。`COMMIT`用于提交更改到数据库,...

    SQL命令大全

    - 使用`LIKE`进行模糊匹配:`stockname LIKE '%findthis%'` 表示匹配包含“findthis”的字符串。 - 特殊的`LIKE`表达式:`stockname LIKE '[a-zA-Z]%'` 表示以字母开头的字符串;`stockname LIKE '^[^F-M]%'` 表示...

    oracle函数调用存储过程

    然后通过循环遍历游标中的每一行记录,执行特定的数据处理逻辑。最后,函数返回处理后的结果。 #### 注意事项 - **参数传递**:确保函数和存储过程之间的参数正确匹配。 - **错误处理**:考虑添加异常处理逻辑,...

    oracle进阶实例代码

    根据提供的标题、描述、标签及部分内容,我们可以提炼出Oracle数据库中的几个重要的知识点,这些知识点主要集中在存储过程(Stored Procedure)与函数(Function)的创建与使用上,同时也涉及到了游标(Cursor)的...

    ora存储过程语法.txt

    根据提供的文件信息,我们可以归纳出关于Oracle存储过程的关键知识点,主要涵盖了存储过程的基本结构、变量声明、条件语句、循环语句、游标操作以及调试方法等几个方面。 ### Oracle 存储过程基本结构 存储过程是...

    SQL语句大全大全

    - BETWEEN:检查列值是否在指定的范围之内。例如: SELECT * FROM stock_information WHERE stocknumber BETWEEN 20 AND 100 - ORDER BY:对查询结果进行排序,ASC代表升序(默认),DESC代表降序。例如: SELECT ...

    SQL语句大全大全(经典珍藏版)

    使用 BETWEEN 运算符检查值是否在指定范围内: ```sql SELECT * FROM stock_information WHERE stocknumber BETWEEN 20 AND 100; ``` #### 集合成员资格 使用 IN 运算符检查值是否属于指定的集合: ```sql SELECT *...

    server sql详细说明文档(语句)

    局部变量通常用于存储临时数据,并且只在声明它们的过程或函数内可见。例如: ```sql DECLARE @id CHAR(10); SELECT @id = '10010001'; ``` 全局变量必须以`@@`开头,并由系统自动管理。例如: ```sql SELECT @@...

    SQL语句参考书 SQL语句参考书

    - 使用 `BETWEEN` 匹配特定范围内的值: ```sql SELECT * FROM stock_information WHERE stocknumber BETWEEN 20 AND 100; ``` - 使用 `IN` 匹配列表中的任意值: ```sql SELECT * FROM stock_information ...

    MYSQL存储过程即常用逻辑知识点总结

    - 单游标循环:定义游标、处理变量、打开游标、进入循环,使用`FETCH`获取数据,判断是否继续循环,执行相关操作,提交事务,最后关闭游标。 - 多游标循环:类似单游标循环,但可能涉及多个游标,每个游标都有自己...

    数据库程序设计(1)1

    可以使用`DISTINCT`去除重复值,`WHERE`子句设置查询条件,`BETWEEN`用于范围查询,`LIKE`用于模糊匹配,`IN`用于确定集合内的值,`ORDER BY`用于结果排序,`GROUP BY`用于结果分组,`HAVING`与`GROUP BY`一起用于对...

    \sql\SQL语句大全大全(经典珍藏版).pdf

    - 使用 `BETWEEN` 来匹配某个范围内的值:`stockNumber BETWEEN 20 AND 100;` - 使用 `IN` 来匹配多个特定值中的任意一个:`stockNumber IN (10, 20, 30);` - 使用 `ORDER BY` 对结果进行排序:`ORDER BY stockID...

    经典SQL语句大全 .

    10. **游标**:游标允许在结果集中逐行处理数据,常用于循环操作。`DECLARE`, `OPEN`, `FETCH` 和 `CLOSE` 用于操作游标。 这些只是SQL语言中的一部分概念,实际的"经典SQL语句大全"文档可能会包含更深入的技巧和...

    oracle存储过程语法

    游标可以在循环中打开、读取和关闭,以便逐行处理查询结果。 最后,存储过程还可以包含对数据表的操作,如 `INSERT`、`UPDATE` 或 `DELETE`,以实现数据的增、删、改操作。例如: ```sql DELETE FROM 表名 WHERE ...

    绝对好的 oracle pl/sql 编程

    PL/SQL(Procedure Language for SQL)是一种专门为 Oracle 数据库设计的过程化语言。它结合了 SQL 的数据操作能力与传统过程化语言的控制结构,为开发者提供了强大的数据处理手段。通过将业务逻辑封装到存储过程中...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     删除环境变量中的PATHT CLASSPATH中包含Oracle的值。  删除“开始”/“程序”中所有Oracle的组和图标。  删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents ...

    MySQL学习笔记2-高级查询与存储.md

    在这个例子中,`(SELECT id FROM departments WHERE name = 'HR')` 是子查询部分,它先找到 `departments` 表中名为 “HR” 的部门的 `id`,然后外层查询使用这个 `id` 值去匹配 `employees` 表中的 `department_id`...

Global site tag (gtag.js) - Google Analytics