PLSQL For 循环计数器的数据类型

Posted

技术标签:

【中文标题】PLSQL For 循环计数器的数据类型【英文标题】:Datatype of the PLSQL For loop counter 【发布时间】:2015-04-07 02:44:29 【问题描述】:

我了解PL/SQL For 循环的索引变量/计数器是由循环构造隐式定义的

BEGIN
 FOR v_counter IN 1..5 LOOP
 DBMS_OUTPUT.PUT_LINE ('v_counter = '||v_counter);
 END LOOP;
END;

这个变量的数据类型是什么。很想说BINARY_INTEGERPLS_INTEGER,因为这也允许计数器的负值,并且就计算而言,两者的性能都更好。

这个推论对吗?还有其他考虑吗?

【问题讨论】:

不要认为你可以在 pl/sql 中做到这一点:PLS-00204:函数或伪列 'DUMP' 可能在 SQL 语句中使用 起床,然后做select dump(v_counter) into... From dual; @Wernfried:这只会告诉你它是“NUMBER”数据类型......它不区分 PLS_INTEGER 和 BINARY_INTEGER。您必须了解,PLS_INTEGER 和 BINARY_INTEGER 是 PL/SQL 数据类型 .. 不是 SQL 数据类型。 (尝试:create table junk ( id pls_integer );)。因此,一旦您将 v_counter“转换”为 SQL,它就会将其映射到最接近的数据类型 - NUMBER。这就是你得到的。它无助于理解 PL/SQL 数据类型在 PL/SQL 块中。 【参考方案1】:

这里的文档:

http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/for_loop_statement.htm#LNPLS1536

状态只是“整数”。

上一个帖子在这里:

What's the difference between pls_integer and binary_integer?

指出 binary_integer = pls_integer。

所以这可能无关紧要,因为它们(现在)表现相同。

【讨论】:

以上是关于PLSQL For 循环计数器的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Oracle存储过程游标for循环怎么写

python-循环(while循环for循环)

无法在 plsql 过程中找出循环游标

plsql导出cvs文件后数值为啥会变

python循环之for循环与基本的数据类型以及内置方法

Oracle PLSQL BULK 收集和 For 循环