兼容Oracle函数与存储过程
在UDB-TX Oracle兼容版本中支持兼容Oracle PLSQL函数和存储过程的语法的PLUSQL语言。
| 函数(FUNCTION) |
|---|
| CREATE FUNCTION语法支持EDITIONABLE/NONEDITIONABLE |
| CREATE FUNCTION语法支持RETURN, IS关键字,不指定language |
| CREATE FUNCTION语法函数没有参数,函数名后面不带() |
| CREATE FUNCTION参数个数最多是32767 |
| CREATE FUNCTION语法中END; 在psql中以/结束 |
| CREATE FUNCTION语法变量声明前面没有DECLARE关键字 |
| CREATE FUNCTION语法支持OUT 参数NOCOPY功能 |
| CREATE FUNCTION语法支持sharing_clause |
| CREATE FUNCTION语法支持invoker_rights_clause,默认权限改成DR(DEFINER) |
| CREATE FUNCTION语法支持ACCESSIBLE BY |
| CREATE FUNCTION语法支持DEFAULT COLLATION |
| CREATE FUNCTION语法支持result_cache_clause |
| CREATE FUNCTION语法支持aggregate_clause |
| CREATE FUNCTION语法支持pipelined_clause |
| CREATE FUNCTION语法支持sql_macro_clause |
| ALTER FUNCTION语法 |
| 函数和存储过程相关的视图 |
| 存储过程(PROCEDURE) |
|---|
| CREATE PROCEDURE语法支持EDITIONABLE/NONEDITIONABLE |
| CREATE PROCEDURE语法函数没有参数,函数名后面不带() |
| CREATE PROCEDURE参数个数最多是32767 |
| CREATE PROCEDURE语法中END; 在psql中以/结束 |
| CREATE PROCEDURE语法支持sharing_clause |
| CREATE PROCEDURE语法支持DEFAULT COLLATION |
| CREATE PROCEDURE语法支持invoker_rights_clause |
| CREATE PROCEDURE语法支持ACCESSIBLE BY |
| ALTER PROCEDURE语法 |
| 存储过程没有参数,调用支持不带() |
| 存储过程调用支持EXEC |
| 在PL/SQL 中调用存储过程,可以省略CALL,直接使用存储过程名字 |
| 支持--和/**/两种注释方法 |
用例
CREATE or replace FUNCTION udb_ora_func RETURN integer AS
BEGIN
RETURN 1;
END;
/
CREATE OR REPLACE FUNCTION test_nocopy(a IN int, b OUT NOCOPY int, c IN OUT NOCOPY int)
RETURN record
IS
BEGIN
b := a;
c := a;
END;
/
CREATE OR REPLACE PROCEDURE udb_ora_procedure()
AS
p integer := 20;
begin
raise notice '%', p;
end;
/
call udb_ora_procedure();
CREATE OR REPLACE PROCEDURE udb_ora_procedure
SHARING = METADATA
DEFAULT COLLATION USING_NLS_COMP
AUTHID CURRENT_USER
ACCESSIBLE BY ( FUNCTION A.B )
IS
p integer := 20;
begin
raise notice '%', p;
end;
/