摘要:本文主要向大家介绍了SQLServer数据库之PostgreSQL DBA(6) - PG 11 New Features#3,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助。
本文主要向大家介绍了SQLServer数据库之PostgreSQL DBA(6) - PG 11 New Features#3,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助。
PG 11即将正式发布,本节简单介绍了PG 11的新特性:PL/pgSQL增强和新增的配置参数。
Procedure
PG 11新增了过程Procedure对象,类似Oracle的存储过程.
testdb=# create or replace procedure sp_proc1(in p1 text) as testdb-# $$testdb$# declare testdb$# v1 varchar(10); testdb$# begintestdb$# v1 := 'TEST'; testdb$# raise notice 'Parameter is : %',p1; testdb$# raise notice 'v1 is : %',v1; testdb$# end; testdb$# $$ testdb-# language plpgsql;CREATE PROCEDURE
过程使用CALL调用:
testdb=# call sp_proc1('test');NOTICE: Parameter is : test NOTICE: v1 is : TEST CALL
查看定义信息:
testdb=# \df sp_proc1 List of functions Schema | Name | Result data type | Argument data types | Type --------+----------+------------------+---------------------+------ public | sp_proc1 | | p1 text | proc (1 row) testdb=# \sf sp_proc1CREATE OR REPLACE PROCEDURE public.sp_proc1(p1 text) LANGUAGE plpgsql AS $procedure$ declare v1 varchar(10);begin v1 := 'TEST'; raise notice 'Parameter is : %',p1; raise notice 'v1 is : %',v1;end; $procedure$
过程中可以对事务进行控制,但如果过程在事务中调用,而过程中有事务控制语句,则"不太好使".
存储过程:
create or replace procedure sp_transaction(in p1 text) as $$begin if lower(p1) = 'commit' then commit; elsif lower(p1) = 'rollback' then rollback; else raise notice 'Invalid Parameter!'; end if;end; $$ language plpgsql;
测试场景:
testdb=# begin;BEGIN testdb=# insert into tt values(1);INSERT 0 1 testdb=# call sp_transaction('commit');ERROR: invalid transaction termination CONTEXT: PL/pgSQL function sp_transaction(text) line 4 at COMMIT testdb=# commit;ROLLBACK testdb=# commit;WARNING: there is no transaction in progress COMMIT
PL/pgSQL似乎没有类似于Oracle自治事务的概念(在存储过程中控制事务而与外层事务无关),不建议在过程/函数中使用事务,调用方统一管理事务.
变量定义
在函数或过程中,可定义变量为常量(CONSTANT关键字),并设置NOT NULL属性,详细请参照参考资料.
新增的参数包括并行执行相关的参数如enable_parallel_hash等,详见下表(更详细的信息参照参考资料).
新增参数(1)
新增参数(2))
本文由职坐标整理并发布,希望对同学们学习SQL Server有所帮助,更多内容请关注职坐标数据库SQL Server数据库频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-IT技术咨询与就业发展一体化服务 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号