gpt4 book ai didi

sql - 为什么我在尝试创建这个简单函数时收到 PLS-00103?

转载 作者:行者123 更新时间:2023-12-04 23:52:02 24 4
gpt4 key购买 nike

我正在尝试创建这个函数:

create or replace function g(sN int) return char(3) as
t char(3);
begin
select pt into t from (
select pTT as pt, pC
from ple
order by pC asc
) where sN <= pC and rownum <= 1;

return t;
end;
/

我收到以下错误:

LINE/COL ERROR
-------- -----------------------------------------------------------------
1/31 PLS-00103: Encountered the symbol "(" when expecting one of the
following:
; is authid as cluster order using external varying character
large deterministic parallel_enable pipelined aggregate
result_cache accessible

2/9 PLS-00103: Encountered the symbol "CHAR" when expecting one of
the following:
, from into bulk
The symbol "," was substituted for "CHAR" to continue.


LINE/COL ERROR
-------- -----------------------------------------------------------------
2/16 PLS-00103: Encountered the symbol ";" when expecting one of the
following:
. ( , * % & - + / at mod remainder rem <an identifier>
<a double-quoted delimited-identifier> <an exponent (**)> as
from into || multiset bulk

11/8 PLS-00103: Encountered the symbol "end-of-file" when expecting
one of the following:
end not pragma final instantiable order overriding static
member constructor map

我的问题:

  1. 一般来说,为什么会出现或表示这些错误?
  2. 更具体地说,为什么我会收到此错误消息?

我的研究:SO 上有许多涉及 PLS-00103 的问题,但似乎没有一个适合我的职能。

我在 SO 上看到的导致 PLS-00103 的一些问题是:

  1. 不小心将保留字(如 max 或 min)用作变量名。
  2. 不正确地使用循环结构关键字,例如使用 EXIT LOOP 结束一个循环而不是结束循环。
  3. 错误地为变量赋值,例如 x + 9 = x。

当然,这并不是我指出的 PLS-00103 问题的完整列表,但我认为我的功能不适用于我所见过的任何问题。

最佳答案

参数只能指定基本类型,不能指定精度、比例、长度等

return char(3)

应该是

return char

或者更好,

return ple.ptt%type

btw char 几乎从来都不是一个好主意。它并没有像某些人认为的那样避免可变长度字符串的一些开销,并且它不能确保诸如 3 个字母的 ISO 货币代码之类的值具有预期的字母数。它所做的只是在非空值的末尾添加空格,有时会在您不期望的情况下添加,从而导致模糊的错误。添加它只是出于 ANSI 兼容性原因,您真的不应该在使用 Oracle 开发新系统时使用它。

关于sql - 为什么我在尝试创建这个简单函数时收到 PLS-00103?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40682126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com