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

GBase 8s兼容 Oracle之子程序

原创 ting 2021-06-21
1245

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子句)。
子程序以子程序标题开始,该标题指定其名称和(可选)参数列表。子程序有以下几个部分:
 声明部分(可选):本部分声明并定义局部类型、游标、常量、变量、异常。
 可执行部分(必需):此部分包含一个或多个用于赋值、控制执行和操作数据的语句。
 异常处理部分(可选):此部分包含处理运行时错误的代码。
使用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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论