首页 > 数据库 > 国内数据库 > GBase 8s兼容 Oracle之子程序
GBase 8s 当前版本所支持的 PL/SQL 语法与 Oracle 完全一致。需要注意,使用 PL/SQL 语法需要显式设置环境变量 SQLMODE 为 ’ORACLE’ 后才能生效,默认情况下 GBase 8s 的 SQLMODE 为 ’GBASE’ ,此时不支持 PL/SQL 语法。
|
set environment sqlmode 'oracle'; |
PL/SQL 子程序是可以重复调用的 PL/SQL 命名块,一般指过程和函数。通常,使用过程执行操作,使用函数计算并返回值。函数的结构与过程相同,但是函数必须包含 RETURN 子句,该子句指定函数返回的值的数据类型(过程不能有 RETURN 子句)。
子程序以子程序标题开始,该标题指定其名称和(可选)参数列表。子程序有以下几个部分:
l 声明部分(可选):本部分声明并定义局部类型、游标、常量、变量、异常。
l 可执行部分(必需):此部分包含一个或多个用于赋值、控制执行和操作数据的语句。
l 异常处理部分(可选):此部分包含处理运行时错误的代码。
使用 call 加子程序名加参数的方式调用子程序,如果子程序没有参数,或者为每个参数指定了默认值,则可以省略参数列表或指定空参数列表。调用子程序的形式如下:
|
call subprogram_name [ ( [ parameter [, parameter]... ] ) ] |
下面是创建并调用子程序的示例,使用“ / ”作为判断语句结束的标志:
示例一:创建并调用函数:
|
CREATE FUNCTION p1 (original NUMBER) RETURN NUMBER AS original_squared NUMBER; BEGIN original_squared := original * original; RETURN original_squared; END; / |
调用代码及结果如下:
|
SELECT p1 (100) FROM dual;
结果 : 10000.0000000000 |
示例二:创建并调用过程:
|
CREATE OR REPLACE PROCEDURE p2 AS BEGIN FOR i IN 1..5 LOOP DBMS_OUTPUT.PUT_LINE(i || '! = ' || f_6_7(i)); END LOOP; END ; / |
调用代码及结果如下:
|
call p2();
结果 : 1! =1 2! =2 3! =6 4! =24 5! =120 |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70002446/viewspace-2777557/ ,如需转载,请注明出处,否则将追究法律责任。