Oracle学习(九)存过、游标、RECORD整合

一、代码

复制代码
/*1.定义存过*/
CREATE OR REPLACE 
PROCEDURE PRO_RE_USER_ORD_GOODS(
--NOW_DATE格式:YYYYMMDD 如:20190801(此时统计的是2019年7月31日的数据)
NOW_DATE IN VARCHAR2
) 
IS

    /*2.定义变量 START*/
    --定义RECORD型记录类型;
    TYPE T_RECORD IS RECORD (
        GOODS_CODE VARCHAR2 (64),
        GOODS_NAME VARCHAR2 (64)
    ) ; 
    --定义返回结果集接收的变量,类型为T_RECORD;
  PS:这里也可以不用record,直接指定V_ROWRESUT为%rowtype类型
V_ROWRESUT T_RECORD ; --定义主键 PID VARCHAR2 (256) ; /*2.定义变量 end*/ /*3.定义游标,执行查询结果集操作 START*/ CURSOR CUR_RE_USER_ORD_GOODS IS --查询语句开始 SELECT A .GOODS_CODE, B.GOODS_NAME FROM ( SELECT ORD.GOODS_CODE FROM ORDER_INFO ORD GROUP BY ORD.GOODS_CODE ) A LEFT JOIN GOODS_INFO B ON A .GOODS_CODE = B.GOODS_CODE ; --查询语句结束 /*3.定义游标,执行查询结果集操作 END*/ /*4.打开并循环游标,进行数据操作 START*/ BEGIN OPEN CUR_RE_USER_ORD_GOODS; --打开游标; LOOP --开始执行循环,遍历查询结果集表; FETCH CUR_RE_USER_ORD_GOODS INTO V_ROWRESUT; --循环游标并赋值给结构体变量; EXIT WHEN CUR_RE_USER_ORD_GOODS %NOTFOUND; --如果游标遍历完成,就退出循环; --获取 UUID 并赋值给 PID 变量; SELECT SYS_GUID() INTO PID FROM DUAL; --插入“订购商品记录表” 开始 INSERT INTO RE_USER_ORD_GOODS ( ID, GOODS_CODE, GOODS_NAME, CREATE_TIME )VALUES( PID, V_ROWRESUT.GOODS_CODE, V_ROWRESUT.GOODS_NAME, SYSDATE ); --插入“订购商品记录表” 结束 END LOOP; --结束循环; CLOSE CUR_RE_USER_ORD_GOODS; --关闭游标; COMMIT; --提交 INSERT 操作; END; /*4.打开并循环游标,进行数据操作 END*/
复制代码

oracle存储过程中is和as区别

  • 在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;
  • 在视图(VIEW)中只能用AS不能用IS;
  • 在游标(CURSOR)中只能用IS不能用AS。

声明变量的方式

  • v_temp     varchar(10)
  • v_temp     tablename.property%type(表名属性名%type,指的是一个表中某个字段的类型,这样可以灵活使用)
  • v_stu    student%rowtype;(这种类型就是定义一个变量,这个变量的类型为一个表数据的行类型,用于接收查询的一整行数据

赋值方式

  • :=
posted @   有梦想的肥宅  阅读(1378)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示