IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> PostgreSQL的PL/pgSQL块结构 -> 正文阅读

[大数据]PostgreSQL的PL/pgSQL块结构

使用过Oracle的语句块的都熟悉,在不用创建存储过程或函数就可以执行PLSQL数据库脚本,这样做通常可以用来做一些复杂业务数据初始化的功能。那么在PostgreSQL中也有相应的功能,称为PL/pgSQL,具体语法如下:

[ <<label>> ]
[ DECLARE
    declarations ]
BEGIN
    statements
END [ label ];
  • 语句块由两部分组成:声明部分与主体部分,声明部分是可选的,主体部分是必须的,在主体部分最后的END使用;结尾。
  • 块有个可选标签label,如果使用了label那么在END结尾也必须跟label标签。
  • 主体部分为具体的编码部分,每条语句都要已;结尾。

PostgreSQL中如果不想创建函数或存储过程,就想执行语句块,可以使用匿名函数,如下:

do $$
begin
	raise notice '无Label标签与声明部分';
end $$;
或者
do $$
<<test>>
begin
	raise notice '使用label标签';
end test $$;
或者
do $$
<<test>>
declare
	i int:=1;
begin
	i := i+1;
	raise notice '使用label标签,声明i变量,i=%',i;
end test $$;

上面例子给出了三种写法,输出结果如下:

无Label标签与声明部分
使用label标签
使用label标签,声明i变量,i=2

从上面的案例可以看到declare声明了一个int类型的i简单变量,PL/pgSQL变量可以使用任意的SQL数据类型,比如integervarcharchar等等。比如:

--声明字符串类型变量
name varchar(30);
--声明复合数据类型
user_info user%rowtype;
--拷贝字段的类型
user_id user.id%type;
--声明记录类型
user_list record;

变量声明语法:

name [ CONSTANT ] type [ COLLATE collation_name ] [ NOT NULL ] [ { DEFAULT | := | = } expression ];

如果想在声明变量的时候就需要给默认值,写法如下:

num int:=0;

对于简单的变量声明就不做演示,下面演示下符合数据类型及记录类型的使用,复合数据类型一般用于将整条数据存储到变量里面;记录类型则是记录多条数据,通常配合for循环使用;

do $$
<<test>>
declare
	t_o t_order%rowtype;
	t_o_list record;
begin
	select * into t_o from t_order t where t.id = 5;
	raise notice '客户:%,订单编码:%',t_o.cus_name,t_o.order_code;
	
	for t_o_list in (select * from t_order) loop
		raise notice '客户:%,订单编码:%',t_o_list.cus_name,t_o_list.order_code;
	end loop;
end test $$;
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:39:43  更:2022-03-04 15:42:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:24:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码