--游标 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;
相关推荐
如果游标已经打开,其值为`TRUE`;否则为`FALSE`。当游标不再需要时,应该使用`CLOSE`语句将其关闭,释放资源。 #### 事务控制 在PL/SQL中执行DML语句时,通常需要显式地管理事务。`COMMIT`用于提交更改到数据库,...
- 使用`LIKE`进行模糊匹配:`stockname LIKE '%findthis%'` 表示匹配包含“findthis”的字符串。 - 特殊的`LIKE`表达式:`stockname LIKE '[a-zA-Z]%'` 表示以字母开头的字符串;`stockname LIKE '^[^F-M]%'` 表示...
然后通过循环遍历游标中的每一行记录,执行特定的数据处理逻辑。最后,函数返回处理后的结果。 #### 注意事项 - **参数传递**:确保函数和存储过程之间的参数正确匹配。 - **错误处理**:考虑添加异常处理逻辑,...
根据提供的标题、描述、标签及部分内容,我们可以提炼出Oracle数据库中的几个重要的知识点,这些知识点主要集中在存储过程(Stored Procedure)与函数(Function)的创建与使用上,同时也涉及到了游标(Cursor)的...
根据提供的文件信息,我们可以归纳出关于Oracle存储过程的关键知识点,主要涵盖了存储过程的基本结构、变量声明、条件语句、循环语句、游标操作以及调试方法等几个方面。 ### Oracle 存储过程基本结构 存储过程是...
- BETWEEN:检查列值是否在指定的范围之内。例如: SELECT * FROM stock_information WHERE stocknumber BETWEEN 20 AND 100 - ORDER BY:对查询结果进行排序,ASC代表升序(默认),DESC代表降序。例如: SELECT ...
使用 BETWEEN 运算符检查值是否在指定范围内: ```sql SELECT * FROM stock_information WHERE stocknumber BETWEEN 20 AND 100; ``` #### 集合成员资格 使用 IN 运算符检查值是否属于指定的集合: ```sql SELECT *...
局部变量通常用于存储临时数据,并且只在声明它们的过程或函数内可见。例如: ```sql DECLARE @id CHAR(10); SELECT @id = '10010001'; ``` 全局变量必须以`@@`开头,并由系统自动管理。例如: ```sql SELECT @@...
- 使用 `BETWEEN` 匹配特定范围内的值: ```sql SELECT * FROM stock_information WHERE stocknumber BETWEEN 20 AND 100; ``` - 使用 `IN` 匹配列表中的任意值: ```sql SELECT * FROM stock_information ...
- 单游标循环:定义游标、处理变量、打开游标、进入循环,使用`FETCH`获取数据,判断是否继续循环,执行相关操作,提交事务,最后关闭游标。 - 多游标循环:类似单游标循环,但可能涉及多个游标,每个游标都有自己...
可以使用`DISTINCT`去除重复值,`WHERE`子句设置查询条件,`BETWEEN`用于范围查询,`LIKE`用于模糊匹配,`IN`用于确定集合内的值,`ORDER BY`用于结果排序,`GROUP BY`用于结果分组,`HAVING`与`GROUP BY`一起用于对...
10. **游标**:游标允许在结果集中逐行处理数据,常用于循环操作。`DECLARE`, `OPEN`, `FETCH` 和 `CLOSE` 用于操作游标。 这些只是SQL语言中的一部分概念,实际的"经典SQL语句大全"文档可能会包含更深入的技巧和...
游标可以在循环中打开、读取和关闭,以便逐行处理查询结果。 最后,存储过程还可以包含对数据表的操作,如 `INSERT`、`UPDATE` 或 `DELETE`,以实现数据的增、删、改操作。例如: ```sql DELETE FROM 表名 WHERE ...
PL/SQL(Procedure Language for SQL)是一种专门为 Oracle 数据库设计的过程化语言。它结合了 SQL 的数据操作能力与传统过程化语言的控制结构,为开发者提供了强大的数据处理手段。通过将业务逻辑封装到存储过程中...
删除环境变量中的PATHT CLASSPATH中包含Oracle的值。 删除“开始”/“程序”中所有Oracle的组和图标。 删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents ...
在这个例子中,`(SELECT id FROM departments WHERE name = 'HR')` 是子查询部分,它先找到 `departments` 表中名为 “HR” 的部门的 `id`,然后外层查询使用这个 `id` 值去匹配 `employees` 表中的 `department_id`...