Greenplum创建存储过程

版权声明:本文为博主九师兄(QQ群:spark源代码 198279782 欢迎来探讨技术)原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21383435/article/details/81950518

1.对比

greenplum 的plpgsql
注意:
1. greenplum 的plpgsql 与 postgresql 不是完全兼容的。
2. plpgsql 不明确界定 函数和存储过程,“returns void” 表示 存储过程,“return 数据类型” 表示 函数。
3. greenplum中的函数分成3种类型: immutable(不可变更的),stable(稳定的),volatile(易变的)。用户自定义的函数若没特别声明,默认是volatile的。
4. plpgsql 不使用 commit,rollback 语句,否则运行时会报错,但是子程序可以编译成功即创建成功。
5. plpgsql 的动态语句 格式“execute <varchar变量的sql语句>”;plpgsql没有 execute [into <variable_list>] [using <variable_list>] 的写法,而ORACLE的动态语句有 execute immediate [into <variable_list>] [using <variable_list>] 的写法。
6. plpgsql 不使用 游标,而是用 for 循环代替。
7. plpgsql 的异常信息 变量: sqlstate,sqlerrm。没有sqlcode。
DB2 的 异常信息 变量:sqlcode,sqlstate,message_text。
ORACLE 的 异常信息 变量:sqlcode,sqlerrm。

1.greenplum数据库准备好

创建表

CREATE TABLE table1 (
  f1 text,
  f2 numeric,
  f3 integer
) distributed by (f1);

添加数据

INSERT INTO table1 values 
 ('test1', 14.1, 3),
 ('test2', 52.5, 2),
 ('test3', 32.22, 6),
 ('test4', 12.1, 4) ;

查看数据

select * from table1;

这里写图片描述

创建存储过程

有参数格式

create or replace function 存储过程名称(in 参数1 参数类型,in 参数2 参数类型,in 参数3 参数类型 )
returns 返回类型 as $$ 
begin
存储过程语句
end;
$$ language plpgsql;

例如

create or replace function prc_test(in par1 text,in par2 numeric,in par3 integer)
returns void as $$ 
begin
insert into table1 values(par1,par2,par3);
end;
$$ language plpgsql;

调用

select prc_test('aa1',1,200);

再次查询语句
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_21383435/article/details/81950518
今日推荐