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) 范围内
它应该看起来像这样:
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;
/
您应该在每个变量之前使用前缀,因为它们会导致冲突。
创建或替换过程 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 编译错误。 *行动: