我可以在哪些数据类型上使用 Oracle PL/SQL RANGE 子句来约束变量?
On which datatypes can I use Oracle PL/SQL RANGE clause to constrain a variable?
我正在尝试弄清楚何时允许在 PL/SQL 块的声明部分的变量定义中使用 RANGE 子句。
以下代码在 Oracle 12c 上测试
这有效...
declare
l_constrained PLS_INTEGER RANGE 7..10 ;
begin
l_constrained := 9;
end ;
/
这给出了一个编译错误...
declare
l_constrained NUMBER(2) RANGE 7..10 ;
begin
l_constrained := 9;
end ;
/
它似乎只适用于 PL/SQL 数据类型而不适用于 SQL 数据类型,但这只是我的第一印象。
任何人都可以给我一些信息,并可能带我去 Oracle 的关于 RANGE 子句使用的官方文档吗?我找不到它...
以前从未听说过此功能。
无论如何,这似乎被称为 "constrained subtype" 并且仅适用于 PLS_INTEGER
和子集。
The only base types for which you can specify a range of values are PLS_INTEGER and its subtypes (both predefined and user-defined).
https://docs.oracle.com/database/121/LNPLS/datatypes.htm#CHDBBCIE
文档没有明确提及 RANGE
在子类型声明之外的用法,但我猜它在某种程度上与将变量声明为 NUMBER(8,2)
属于同一类别,即声明带有对 a 的约束类型。
我正在尝试弄清楚何时允许在 PL/SQL 块的声明部分的变量定义中使用 RANGE 子句。
以下代码在 Oracle 12c 上测试
这有效...
declare
l_constrained PLS_INTEGER RANGE 7..10 ;
begin
l_constrained := 9;
end ;
/
这给出了一个编译错误...
declare
l_constrained NUMBER(2) RANGE 7..10 ;
begin
l_constrained := 9;
end ;
/
它似乎只适用于 PL/SQL 数据类型而不适用于 SQL 数据类型,但这只是我的第一印象。
任何人都可以给我一些信息,并可能带我去 Oracle 的关于 RANGE 子句使用的官方文档吗?我找不到它...
以前从未听说过此功能。
无论如何,这似乎被称为 "constrained subtype" 并且仅适用于 PLS_INTEGER
和子集。
The only base types for which you can specify a range of values are PLS_INTEGER and its subtypes (both predefined and user-defined).
https://docs.oracle.com/database/121/LNPLS/datatypes.htm#CHDBBCIE
文档没有明确提及 RANGE
在子类型声明之外的用法,但我猜它在某种程度上与将变量声明为 NUMBER(8,2)
属于同一类别,即声明带有对 a 的约束类型。