暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MogDB 支持PROCEDURE/FUNCTION/PACKAGE的end后的name和Oracle保持一致

原创 MogDB 2024-08-06
170

可获得性

本特性自MogDB 5.0.0版本开始引入。

特性简介

本特性支持PROCEDURE/FUNCTION/PACKAGE的end后的name语法和Oracle保持一致,既可以使用对象名称,也可以为空。

客户价值

增强MogDB与Oracle的兼容性,减少应用程序的迁移代价。

特性描述

在Oracle中,PROCEDURE/FUNCTION/PACKAGE的end后面可以使用对象名称,也可以为空;但在MogDB5.0之前要求PROCEDURE/FUNCTION的end后不能有名称,而PACKAGE后必须有名称,导致手动迁移代码时需要进行大量改写。

MogDB 5.0.0支持PROCEDURE/FUNCTION/PACKAGE的end后的name语法和Oracle保持一致,既可以使用对象名称,也可以为空。CREATE PACKAGE body 的end后可以有package_name,也可以为空。

语法描述

PROCEDURE/FUNCTION/PACKAGE的end后的name和Oracle保持一致

img

因为无论是函数、过程、包、匿名块,都有block,因此该语法说明不需要单独出现在存储过程及函数的创建语法中,而是统一在此处描述,所以都是可有可无,而一旦有了,则必须和名称保持一致。

img

示例

-- 场景1,支持匿名块end后不带名称 BEGIN raise notice 'ok' END; -- 场景2,匿名块end后带名称 BEGIN raise notice 'ok' END test; -- 场景3,支持存储过程end后名称不一致,检查并报错 CREATE OR REPLACE PROCEDURE test_proc_end IS BEGIN raise notice '%','ok'; END test; -- 场景4,支持存储过程end后带正确名称 CREATE OR REPLACE PROCEDURE test_proc_end IS BEGIN raise notice '%','ok'; END test_proc_end; -- 场景5,支持package中存储过程end后不带名称 CREATE OR REPLACE package test_pkg_end IS PROCEDURE aa; END; -- 场景6,支持package bodyend后不带名称 CREATE OR REPLACE package body test_pkg_end IS PROCEDURE aa IS BEGIN raise notice 'ok'; END; END;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论