oracle 存储过程 变量的申明和赋值 声明变量的三种方式 按照数据类型的声明方式进行区分 方式一:直接声明数据类型 格式:变量名 数据类型(大小) PROCEDURE SIMUULATED_PROFIT IS V_ETLSEQ NUMBER(10); V_START_DT DATE; V_END_DT DATE; 说明: 设置为字符串类型时,需要指定大小,否则报错; 变量的声明必须在”begin”关键字之前进行。–错误用法BEGINv_sql varchar2(100) := ‘SELECT ORGSEQ FROM BASEORGINFO where orgcode=tochar()’; 方式二:使用%TYPE声明 格式:变量名 表名.字段名%TYPE 含义:该变量的数据类型与指定表的指定字段的数据类型一致V_ORGSEQ BASEORG_INFO.ORGSEQ%TYPE 方式三:使用%ROWTYPE声明 格式:变量名 表名%ROWTYPE 含义:该变量的数据类型与指定表的指定行记录(所有字段)的数据类型一致–VIRTUAL_CARD表整行数据V_ROWVIRTUALCARD VIRTUAL_CARD%ROWTYPE; 小结: 在存储过程中,声明变量时,不需要使用关键字“DECLARE”; 变量不区分大小写; 变量在使用前必须声明。 2. 变量赋值的三种方式 方式一:直接赋值,使用“:=” 使用条件:适用于声明变量的前两种方式。V_ORGID :=’110′; 说明: 变量后面不能直接是sql语句,sql不会执行,可以参考方式三。–错误用法V_ORGSEQ := SELECT ORGSEQ INTO VORGSEQ FROM BASEORGINFO;–正确用法V_ORGSEQ := ‘SELECT ORGSEQ INTO VORGSEQ FROM BASEORGINFO’; 变量的声明和赋值可以一块进行。–正确用法v_sql varchar2(100) := ‘SELECT ORGSEQ FROM BASEORGINFO where orgcode=tochar()’;BEGIN/*具体业务*/END; 方法二:select 表字段into 变量from表 变形一:查询指定表的一个指定字段 使用条件:适用于声明变量的前2种方式可以使用–根据医疗机构ID查询对应的父机构的机构序列SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO WHERE ORGID=( SELECT PARENTORGID FROM BASE_ORG_INFO WHERE ORGID=V_ORGID); 变形二:查询指定表的所有字段 使用条件:只适用于声明变量的第三种方式–将id=5120的VIRTUAL_CARD表数据赋值给变量VROWVIRTUALCARDSELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id=5120; 说明: 查询结果只能返回一条记录; 查询的表字段,必须是该表的所有字段。 错误举例:–错误举例一:查询的是所有表记录SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;–错误举例二:查询的是该表的多个字段SELECT t.id,t.name INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T; 方式三:execute immediate sql语句字符串into 变量
3. 变量的调用 一般来说,变量只有这三种使用场景:赋值、逻辑判断、算术运算; 说明:不能用作查询列–错误用法select V_ORGSEQ FROM dual; 使用%ROWTYPE声明的变量如何调用? 利用“变量名.表字段”的方式可以取到该表中指定行(返回行)的指定列(任意列)所代表的数据。–V_ROW_VIRTUAL_CARD赋值SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id=5120;–调用DBMS_OUTPUT.put_line(V_ROW_VIRTUAL_CARD.ID); 参考:https://www.cnblogs.com/Marydon20170307/p/9567493.html
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/85844.html