oracle - 我可以在哪些数据类型上使用 Oracle PL/SQL RANGE 子句来约束变量?

标签 oracle plsql range variable-declaration

我试图弄清楚何时允许在 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/

相关文章:

sql - 将 EXECUTE IMMEDIATE 与带有变量的连接字符串结合使用

php - 如何检查一个IP地址是否在PHP中的两个IP范围内?

Oracle 季度 SQL 查询排名前三的产品

java - 给我一个 Oracle Streams 的简单示例?

sql - Oracle ORA-04030 即使在循环中使用绑定(bind)变量

Javascript : Get Parent Node Name

jquery - 增加 ion.RangeSlider 的高度?

oracle - 从 Oracle 中的其他表中检索仅包含单个项目的行列表

甲骨文顶点 19.2 : Cannot resolve the "schema is reserved or restricted" issue

c++ - 如何在数据库服务器上直接运行C++进程,避免传输数据集?