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_INTEGER
或PLS_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 循环计数器的数据类型的主要内容,如果未能解决你的问题,请参考以下文章