字符串范围是正确的,为什么仍然得到PLS-00215:字符串长度约束必须在范围内(1 ..32767)

问题描述 投票:0回答:2
CREATE FUNCTION GET_NAME( V_CODE VARCHAR2) RETURN VARCHAR2
AS
    NAME VARCHAR2(242);
BEGIN
    SELECT DISTINCT FACT_NAME
    INTO NAME
    FROM TABLEXXX
    WHERE FACT_CODE = V_CODE;
RETURN NAME;
END;

为什么即使定义了长度为242的VARCHA2,它仍然显示这个错误?太奇怪了。

字符串长度限制必须在 (1 .. 32767) 范围内

plsql
2个回答
8
投票

它应该看起来像这样:

CREATE FUNCTION GET_NAME( PV_CODE VARCHAR2) RETURN VARCHAR2
    AS
        LV_NAME VARCHAR2(242);
    BEGIN
        SELECT DISTINCT NAME
        INTO LV_NAME
        FROM TABLEXXX
        WHERE NAME_CODE = PV_CODE;
    RETURN LV_NAME;
    END;
/

您应该在每个变量之前使用前缀,因为它们会导致冲突。


0
投票

创建或替换过程 TASK_INSERT_PROC( PV_PROCESSID VARCHAR2) AS 开始 插入任务_TEMP(任务ID、TXREFNO、进程ID) 选择状态码、TXREFNO、PROCESSID 来自 ftdmaster WHERE PROCESSID = PV_PROCESSID AND statuscode = '7';

COMMIT;

结束任务_插入_过程;

---------上述代码出现以下错误-------- 命令中从第 13 行开始出错 - 宣布 v_processid varchar2:='ET06'; 开始 TASK_INSERT_PROC(v_processid); 结尾; 错误报告- ORA-06550: 第 2 行,第 13 列: PLS-00215:字符串长度约束必须在范围内 (1 .. 32767) 06550. 00000 - “第 %s 行,第 %s 列: %s” *原因:通常是 PL/SQL 编译错误。 *行动:

© www.soinside.com 2019 - 2024. All rights reserved.