声明遍变量
方式 | 格式 | 注意事项 |
---|---|---|
按照数据类型的声明方式进行区分 | 变量名 数据类型(大小) V_START_DATE VARCHAR2(19); | 1.设置为字符串类型时,需要指定大小,否则报错 2.变量的声明必须在"begin"关键字之前进行 |
使用%TYPE声明 | 变量名 表名.字段名%TYPE 含义:该变量的数据类型与指定表的指定字段的数据类型一致 V_ORGSEQ BASE_ORG_INFO.ORGSEQ%TYPE | |
使用%ROWTYPE声明 | 变量名 表名%ROWTYPE 该变量的数据类型与指定表的指定行记录(所有字段)的数据类型一致 V_ROW_VIRTUAL_CARD VIRTUAL_CARD%ROWTYPE;(–VIRTUAL_CARD表整行数据) |
总结:–在存储过程中,声明变量时,不需要使用关键字"DECLARE";
–变量不区分大小写;
–变量在使用前必须声明
变量赋值的三种方式
方式 | 使用条件 | 内容 | 说明 |
---|---|---|---|
直接赋值,使用":=" | 适用于声明变量的前2种方式 _ORGID := ‘110’; | –错误用法V_ORGSEQ := SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO;' --正确用法 'V_ORGSEQ := 'SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO'; 变量后面跟不能直接是sql语句,sql不会执行,可以参考方式三 | |
select 表字段 into 变量 from 表 | 适用于声明变量的前2种方式可以使用 | ||
select 表字段 into 变量 from 表 | 询指定表的所有字段 | ||
execute immediate sql语句字符串 into 变量 |
报错 ORA-01422 实际返回的行数超出请求的行数
:select …into 语句只能够查询一个记录的信息。
如果没有查到任何数据,会产生NO_DATA_FOUND异常;
如果查询到多个记录,则会产生TOO_MANY_ROWS异常。
在这里很明显 “ORA-01422 实际返回的行数超出请求的行数”就是第二种情况,查询到多个记录,所以就会报错,如果必须最后查询到多个结果要显示的话,就要使用到游标了。
变量判断
如果是数字的直接可以用=
如果是字符串的用is
文章链接:https://www.cnblogs.com/Marydon20170307/p/9567493.html