文档中心MogDBMogDB StackUqbar
v5.0

文档:v5.0

支持的版本:

其他版本:

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

可获得性

本特性自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;
Copyright © 2011-2024 www.enmotech.com All rights reserved.