我试图弄清楚何时允许在 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 子句的使用?我找不到它了...
最佳答案
以前从来没有听说过这个功能。
无论如何,这似乎被称为“受限子类型”并且仅适用于 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)
属于同一类别,即声明一个类型的约束。
关于oracle - 我可以在哪些数据类型上使用 Oracle PL/SQL RANGE 子句来约束变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244333/