diff --git a/OpenGaussCompatibleFunction/OpenGaussCompatibleFunction b/OpenGaussCompatibleFunction/OpenGaussCompatibleFunction new file mode 100644 index 0000000000000000000000000000000000000000..46d96505a1021226e18403e5b5b479aefcc40392 --- /dev/null +++ b/OpenGaussCompatibleFunction/OpenGaussCompatibleFunction @@ -0,0 +1,110 @@ +create schema open_descript; + + +-- DBMS_DESCRIPT.DESCRIBE_PROCEDURE +CREATE OR REPLACE FUNCTION open_descript.describe_procedure(in pname varchar) + RETURNS text AS $$ +DECLARE + pdesc text; +BEGIN + select prosrc into pdesc from pg_proc where proname = pname; + return pdesc; +END; +$$ LANGUAGE plpgsql; + + + +create schema open_debug; +-- DBMS_DEBUG.SHOW_SOURCE +CREATE OR REPLACE FUNCTION open_debug.show_source( + in oname varchar,in otype varchar) + RETURNS text AS $$ +DECLARE + osource text; +BEGIN + if (otype = 'index') then + select indexdef into osource from pg_indexes where indexname = oname; + end if; + if (otype = 'function') then + select prosrc into osource from pg_proc where proname = oname; + else + select definition into osource from pg_views where viewname = oname; + end if; + return osource; +END; +$$ LANGUAGE plpgsql; + + +-- DBMS_DEBUG.PROBE_VERSION +CREATE OR REPLACE FUNCTION open_debug.probe_version() + RETURNS text AS $$ +DECLARE + pversion text; + mysql text; +BEGIN + mysql := 'select version()'; + execute mysql into pversion; + return pversion; +END; +$$ LANGUAGE plpgsql; + + +-- DBMS_DEBUG.SET_TIMEOUT +CREATE OR REPLACE FUNCTION open_debug.set_timeout(t integer) + RETURNS boolean AS $$ +DECLARE + stimeout text; + mysql text; +BEGIN + -- 只针对当前session + mysql :='set statement_timeout = ' || t; + execute mysql; + return stimeout; +END; +$$ LANGUAGE plpgsql; + + + + +-- DBMS_SESSION.IS_SESSION_ALIVE +CREATE OR REPLACE FUNCTION open_session.is_active_session(in pno int) + RETURNS text AS $$ +DECLARE + ac text; +BEGIN + select state into ac from pg_stat_activity where pid = pno; + return ac; +END; +$$ LANGUAGE plpgsql; + +-- DBMS_SESSION.SET_ROLE +CREATE OR REPLACE FUNCTION open_session.set_role(in username text,in rolename text) + RETURNS boolean AS $$ +DECLARE + passed boolean; + mysql text; +BEGIN + mysql :='alter user '|| username ||' '||rolename ||''; + execute mysql; + return passed; +END; +$$ LANGUAGE plpgsql; + + +-- DBMS_SESSION.UNIQUE_SESSION_ID +CREATE OR REPLACE FUNCTION open_session.unique_session_id() + RETURNS text AS $$ +DECLARE + passed text; + mysql text; +BEGIN + mysql :='select distinct pid from pg_stat_activity'; + execute mysql into passed; + return passed; +END; +$$ LANGUAGE plpgsql; + + + + + diff --git "a/OpenGaussCompatibleFunction/OpenGaussCompatibleFunction\350\257\264\346\230\216" "b/OpenGaussCompatibleFunction/OpenGaussCompatibleFunction\350\257\264\346\230\216" new file mode 100644 index 0000000000000000000000000000000000000000..8fc1e53723ae920f8e050e2c0fbc77576ae5a03d --- /dev/null +++ "b/OpenGaussCompatibleFunction/OpenGaussCompatibleFunction\350\257\264\346\230\216" @@ -0,0 +1,52 @@ +OpenGaussCompatibleFunction补充说明 +函数名称 函数功能 结论 +UTL_FILE 用户可通过UTL_FILE访问的文件和目录集由许多因素和数据库参数控制。 Utl_file这个主要是提供文本文件的交互,在Oracle中主要是针对directory的操作,然后OpenGauss并没有directory这样的概念 +DBMS_DEBUG.ATTACH_SESSION Procedure 通知调试会话有关目标程序的信息。 无debugID +DBMS_DEBUG.CONTINUE Function 将给定的breakflags传递给目标进程中的Probe。它告诉Probe继续执行目标进程,并等待目标进程运行完成或发出事件信号。 没有断点这样的概念 +DBMS_DEBUG.DEBUG_OFF Procedure 通知目标会话在该会话中不再进行调试。在结束会话之前不必调用此函数。 存在冗余的情况 +DBMS_DEBUG.DEBUG_ON Procedure 标记目标会话,以便所有PL / SQL都以调试模式运行。必须在进行任何调试之前完成此操作。 存在冗余的情况 +DBMS_DEBUG.DELETE_BREAKPOINT Function 删除断点。 open gauss不能删除checkpoints +DBMS_DEBUG.DELETE_OER_BREAKPOINT Function 删除OER断点。 没有oer checkpoint +DBMS_DEBUG.DETACH_SESSION Procedure 停止调试目标程序。 没有oer checkpoint +DBMS_DEBUG.DISABLE_BREAKPOINT Function 使现有断点处于非活动状态但将其保留在原位。 没有oer checkpoint +DBMS_DEBUG.ENABLE_BREAKPOINT Function 此功能与禁用相反。这将启用先前禁用的断点。 no breakpoint +DBMS_DEBUG.EXECUTE Procedure 在目标会话中执行SQL或PL / SQL代码。假定目标会话在断点(或其他事件)处等待。 存在冗余的情况 +DBMS_DEBUG.GET_INDEXES Function 给定变量或参数的名称,如果它是索引表,则此函数返回其索引集。如果它不是索引表,则返回错误。 存在冗余的情况 +DBMS_DEBUG.GET_LINE_MAP Function 查找有关程序的行和入口点信息,以便调试器可以确定可以放置断点的源行。 存在冗余的情况 +DBMS_DEBUG.GET_RUNTIME_INFO Function 返回有关当前程序的信息。 类似dbms_source +DBMS_DEBUG.GET_TIMEOUT_BEHAVIOUR Function 返回当前超时行为。 存在冗余的情况 +DBMS_DEBUG.GET_VALUE Function 从当前运行的程序中获取值。 存在冗余的情况 +DBMS_DEBUG.INITIALIZE Function 初始化目标会话以进行调试。 no debugID +DBMS_DEBUG.PING Procedure ping目标会话以防止它超时。 存在冗余的情况 +DBMS_DEBUG.PRINT_BACKTRACE Procedure 打印当前执行堆栈的回溯列表。 没有trace这样的概念 +DBMS_DEBUG.PRINT_INSTANTIATIONS Procedure 返回已在当前会话中实例化的包的列表。 没有trace这样的概念 +DBMS_DEBUG.SELF_CHECK Procedure 执行内部一致性检查。 存在冗余的情况 +DBMS_DEBUG.SET_BREAKPOINT Function 在程序单元中设置断点,该断点在当前会话中持续存在。 no breakpoint +DBMS_DEBUG.SET_OER_BREAKPOINT Function 设置OER断点。 no OER breakpoint +DBMS_DEBUG.SET_TIMEOUT_BEHAVIOUR Procedure 设置超时值并返回新的超时值。 no Probe +DBMS_DEBUG.SET_VALUE Function 在当前运行的程序中设置一个值。 无法进行传参 +DBMS_DEBUG.SHOW_BREAKPOINTS Procedures 有两个重载过程返回当前断点的列表。 no breakpoints +DBMS_DEBUG.SHOW_FRAME_SOURCE Procedure 获取源代码。 类似dbms_source +DBMS_DEBUG.SYNCHRONIZE Function 一直等到目标程序发出事件信号。如果info_requested不为NULL ,则调用GET_RUNTIME_INFO 。 openGauss没有同义词 +DBMS_DEBUG.TARGET_PROGRAM_RUNNING Procedure 如果目标会话当前正在执行存储过程,则此过程返回TRUE否则返回FALSE 。 存在冗余的情况 +DBMS_SESSION.CLEAR_ALL_CONTEXT 清除指定命名空间中的应用程序上下文信息。 opengauss是通过上下键控制context +DBMS_SESSION.CLEAR_CONTEXT 清除指定命名空间中的应用程序上下文。 opengauss是通过上下键控制context +DBMS_SESSION.CLEAR_IDENTIFIER 删除会话中的set_client_id 。 no identifier +DBMS_SESSION.CLOSE_DATABASE_LINK 将关闭打开的数据库链接。 opengauss默认不编译dblink +DBMS_SESSION.FREE_UNUSED_USER_MEMORY 执行需要大量内存(超过100K)的操作后,此过程将回收未使用的内存。 存在冗余的情况 +DBMS_SESSION. GET_PACKAGE_MEMORY_UTILIZATION 描述静态包内存使用情况。 存在冗余的情况 +DBMS_SESSION.IS_ROLE_ENABLED 确定是否为此会话启用了命名角色。 no named role +DBMS_SESSION.LIST_CONTEXT 返回当前会话的活动命名空间和上下文的列表。 opengauss是通过上下键控制context +DBMS_SESSION.MODIFY_PACKAGE_STATE 用于对会话中活动的所有PL / SQL程序单元的会话状态执行各种操作(由action_flags参数指定)。 存在冗余的情况 +DBMS_SESSION.RESET_PACKAGE 取消实例化此会话中的所有包。它释放了包状态。 存在冗余的情况 +DBMS_SESSION.SESSION_TRACE_DISABLE 将重置调用它的会话的会话级SQL跟踪。 no trace +DBMS_SESSION.SESSION_TRACE_ENABLE 调用会话启用会话级SQL跟踪。 no trace +DBMS_SESSION.SET_CONTEXT 设置上下文,其中有四种类型:会话本地,全局初始化,外部初始化和全局访问。 opengauss是通过上下键控制context +DBMS_SESSION.SET_EDITION_DEFERRED 请求切换到指定的版本。交换机在当前客户端呼叫结束时生效。 存在冗余的情况 +DBMS_SESSION.SET_IDENTIFIER 在会话中设置客户端ID。 no identifier +DBMS_SESSION.SET_NLS 设置全球化支持(NLS) 存在冗余的情况 +DBMS_SESSION.SET_SQL_TRACE 打开或关闭跟踪。 no trace + + + +