【发布时间】: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 块中。
标签: oracle for-loop plsql sqldatatypes