Oracle SQL Developer创建函数报END未知命令错误排查
Oracle SQL Developer执行创建函数报
END Error report - Unknown Command排查 错误根因
Get_Day_Name函数本身的PL/SQL语法没有问题,报错来自SQL Developer的语句解析逻辑:
- 工具默认将分号
;作为普通SQL语句的结束分隔符,但PL/SQL块(函数、存储过程、触发器、匿名块等)无法仅通过末尾的;标记整段块结束,工具执行到END;后会将后续空行、零散内容识别为独立命令,最终抛出Unknown Command错误。
修复方案
在整段创建函数代码的最后单独起一行加斜杠/即可。/是Oracle官方工具链中标记PL/SQL块提交结束的标准标识,添加后工具会将整段代码作为完整PL/SQL块提交执行,不会拆分解析语句。
修正后可直接运行的完整代码:
CREATE OR REPLACE FUNCTION Get_Day_Name(P_DAY DATE) RETURN VARCHAR2 IS BEGIN RETURN(TO_CHAR(P_DAY,'DAY')); END; /
注意事项
- 如果当前SQL工作表中存在其他代码,执行前请完整选中从
CREATE OR REPLACE FUNCTION开头到末尾斜杠/的全部内容,再点击执行按钮,避免工具误识别零散内容触发解析错误。 - 该函数默认返回的星期名称受数据库
NLS_DATE_LANGUAGE参数影响,若需要固定返回指定语言的星期名,可给TO_CHAR传入NLS参数,例如固定返回中文星期的写法为TO_CHAR(P_DAY,'DAY','NLS_DATE_LANGUAGE=SIMPLIFIED CHINESE')。
内容的提问来源于stack exchange,提问作者Furkan Çelik
相关产品推荐
相关产品推荐

