ORA-00907: 缺少右括号,在 Oracle 10 上而不是在 Oracle 11 上
ORA-00907: missing right parenthesis, on Oracle 10 and not on Oracle 11
为什么以下查询在 Oracle 10 上失败而不在 Oracle 11 上失败。
SELECT trunc(DBMS_RANDOM.value(low => 10, high =>50)) from dual;
甲骨文 10:
ORA-00907: missing right parenthesis
这个答案有点推测性,但对缺少右括号错误的一种可能解释是,此错误实际上与缺少括号有关。相反,如果 DBMS_RANDOM.value
的 API 在您的 Oracle 10 和 Oracle 11 版本中不同,那么您可能会看到此错误。试试这个查询:
SELECT TRUNC(DBMS_RANDOM.value(10, 50))
FROM dual
如果这有效,那么您就会知道 API 在 Oracle 10 和 11 之间发生了变化。
这是一个 reference,它使用我在查询中使用的 API。
Beginning in this release, it is now possible to invoke the function
in a SQL statement. For example, named notation syntax is:
SELECT f(pn=>3, p2=>2, p1=>1) FROM dual
Or, mixed notation is:
SELECT f(1, pn=>3) FROM dual
In previous releases, attempting named or mixed notation resulted in
an error.
所以在 11g 之前,您只能使用位置符号从 SQL 调用 PL/SQL 函数,例如
SELECT trunc(DBMS_RANDOM.value(10, 50)) from dual;
...因为@TimBiegeleisen 已经展示了作品。 'missing right parenthesis' 错误并不一定意味着您的括号不平衡;只是解析器在它认为括号可能出现的地方看到了一些它没有预料到的东西 - 在这种情况下,在 =>
.
为什么以下查询在 Oracle 10 上失败而不在 Oracle 11 上失败。
SELECT trunc(DBMS_RANDOM.value(low => 10, high =>50)) from dual;
甲骨文 10:
ORA-00907: missing right parenthesis
这个答案有点推测性,但对缺少右括号错误的一种可能解释是,此错误实际上与缺少括号有关。相反,如果 DBMS_RANDOM.value
的 API 在您的 Oracle 10 和 Oracle 11 版本中不同,那么您可能会看到此错误。试试这个查询:
SELECT TRUNC(DBMS_RANDOM.value(10, 50))
FROM dual
如果这有效,那么您就会知道 API 在 Oracle 10 和 11 之间发生了变化。
这是一个 reference,它使用我在查询中使用的 API。
Beginning in this release, it is now possible to invoke the function in a SQL statement. For example, named notation syntax is:
SELECT f(pn=>3, p2=>2, p1=>1) FROM dual
Or, mixed notation is:
SELECT f(1, pn=>3) FROM dual
In previous releases, attempting named or mixed notation resulted in an error.
所以在 11g 之前,您只能使用位置符号从 SQL 调用 PL/SQL 函数,例如
SELECT trunc(DBMS_RANDOM.value(10, 50)) from dual;
...因为@TimBiegeleisen 已经展示了作品。 'missing right parenthesis' 错误并不一定意味着您的括号不平衡;只是解析器在它认为括号可能出现的地方看到了一些它没有预料到的东西 - 在这种情况下,在 =>
.