plsql – 无法在BEGIN / END块中放入WITH FUNCTION子句
发布时间:2020-12-12 13:15:02 所属栏目:百科 来源:网络整理
导读:为什么下面的代码没有编译 DECLAREc number;BEGINWITHFUNCTION calculate(i IN NUMBER) RETURN NUMBERASr number;BEGIN r := i*i; RETURN r;END;select calculate(1) INTO c from dual;END; 给出以下错误: Error report -*ORA-06550: line 5,column 10:PL/S
为什么下面的代码没有编译
DECLARE c number; BEGIN WITH FUNCTION calculate(i IN NUMBER) RETURN NUMBER AS r number; BEGIN r := i*i; RETURN r; END; select calculate(1) INTO c from dual; END; 给出以下错误: Error report - *ORA-06550: line 5,column 10: PL/SQL: ORA-00905: missing keyword ORA-06550: line 4,column 1: PL/SQL: SQL Statement ignored 06550. 00000 - "line %s,column %s:n%s" Cause: Usually a PL/SQL compilation error. Action:* 而 WITH FUNCTION calculate(i IN NUMBER) RETURN NUMBER AS r number; BEGIN r := i*i; RETURN r; END; select calculate(1) from dual; 编译? Oracle版本信息 > Oracle Database 12c企业版12.1.0.2.0版 – 64位生产 解决方法这个结构似乎在PL / SQL中似乎不受支持.据推测,它将在未来版本中添加.在此期间它很不愉快,但您可以使用动态SQL,它继续在SQL上下文中运行您的工作语句: DECLARE c number; BEGIN EXECUTE IMMEDIATE ' WITH FUNCTION calculate(i IN NUMBER) RETURN NUMBER AS r number; BEGIN r := i*i; RETURN r; END; select calculate(2) from dual' INTO c; DBMS_OUTPUT.PUT_LINE(c); END; / 4 即使对于子查询块,The documentation for (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |