Max*_*Max 5 oracle plsql range variable-declaration
我想弄清楚何时在PL/SQL块的声明部分中的变量定义中允许使用RANGE子句.
以下代码在Oracle 12c上进行了测试
这有效......
declare
l_constrained PLS_INTEGER RANGE 7..10 ;
begin
l_constrained := 9;
end ;
/
Run Code Online (Sandbox Code Playgroud)
这给出了编译错误......
declare
l_constrained NUMBER(2) RANGE 7..10 ;
begin
l_constrained := 9;
end ;
/
Run Code Online (Sandbox Code Playgroud)
它似乎只适用于PL/SQL数据类型而不适用于SQL数据类型,但这只是我的第一印象.
有人可以给我一些信息,并可能请我转到Oracle关于使用RANGE条款的官方文档吗?我找不到它了...
以前从未听说过这个功能。
不管怎样,这似乎被称为“受限子类型”并且仅适用于PLS_INTEGER和 子集。
唯一可以指定值范围的基本类型是 PLS_INTEGER 及其子类型(预定义的和用户定义的)。
https://docs.oracle.com/database/121/LNPLS/datatypes.htm#CHDBBCIE
该文档没有明确提到RANGE子类型声明之外的用法,但我猜它在某种程度上属于与将变量声明为同一类别NUMBER(8,2),即对类型进行约束声明。