PL/pgSQL学习笔记之八

简介:

http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html

另外一种声明 PL/pgSQL 函数的方法是使用 returns table,例如:

复制代码
CREATE FUNCTION extended_sales(p_itemno int)
RETURNS TABLE(quantity int, total numeric) AS $$
BEGIN
    RETURN QUERY SELECT quantity, quantity * price FROM sales
                 WHERE itemno = p_itemno;
END;
$$ LANGUAGE plpgsql;
复制代码

这类似于声明一个或多个OUT参数,或者指定 RETURNS SETOF。

当一个PL/pgSQL函数的返回类型定义为多态类型(anyelementanyarrayanynonarray, 或anyenum),一个特殊的参数$0会被创建。它的数据类型是函数的实际返回类型,是从输入类型中推演出来的。这允许函数访问其实际的返回值。$0 初始化为null,其后可以被函数所改变,因此它可以用来保留返回值。$0也可以被赋予别名。例如,下面的函数在任何拥有+ 操作符的数据类型下执行

复制代码
CREATE FUNCTION add_three_values(v1 anyelement, v2 anyelement, v3 anyelement)
RETURNS anyelement AS $$
DECLARE
    result ALIAS FOR $0;
BEGIN
    result := v1 + v2 + v3;
    RETURN result;
END;
$$ LANGUAGE plpgsql;
复制代码

也可以通过声明多个多态类型的输出参数来完成同样的目的。在此时,$0参数没有使用;输出参数自己就完成了此目的。例如:

复制代码
CREATE FUNCTION add_three_values(v1 anyelement, v2 anyelement, v3 anyelement,
                                 OUT sum anyelement)
AS $$
BEGIN
    sum := v1 + v2 + v3;
END;
$$ LANGUAGE plpgsql;
复制代码
目录
相关文章
|
5月前
|
自然语言处理 IDE 开发工具
5分钟完成手势识别项目!CodeBuddy的Craft模式让传统编程方法沦为古董?
本文介绍了使用CodeBuddy快速开发手势识别程序的方法。首先安装Python 3.9.13并配置VS Code环境,接着通过pip安装依赖库`mediapipe`和`opencv-python`。利用CodeBuddy的Craft模式,仅需输入自然语言描述即可生成基础代码,经过简单调整后即可运行。代码实现了四种手势识别(OK、竖大拇指、握拳、张开手掌),并通过摄像头实时展示结果。尽管电脑摄像头像素较低,但识别效果良好。本文旨在帮助读者了解CodeBuddy的强大功能,并激发更多创意应用。
361 20
|
8月前
|
存储 安全 虚拟化
Windows 11 绕过 TPM 方法总结,通用免 TPM 镜像下载 (2025 年 2 月更新)
Windows 11 绕过 TPM 方法总结,通用免 TPM 镜像下载 (2025 年 2 月更新)
321 0
Windows 11 绕过 TPM 方法总结,通用免 TPM 镜像下载 (2025 年 2 月更新)
|
9月前
|
传感器 分布式计算 算法
解码大数据的四个V:体积、速度、种类与真实性
解码大数据的四个V:体积、速度、种类与真实性
437 21
|
10月前
|
敏捷开发 监控 数据可视化
项目管理仪表盘详解:高效团队协作从这里开始
从IT开发到工程建设、从市场营销到研发项目,仪表盘都可以通过整合和可视化关键数据,帮助团队协作、监控进度、优化资源配置,从而确保项目按时、高质量交付。
424 0
项目管理仪表盘详解:高效团队协作从这里开始
|
11月前
|
存储 监控 安全
智慧社区可视化解决方案:科技引领社区服务与管理新篇章
智慧社区通过现代科技整合区域资源,提升治理和服务水平,为居民提供便捷、高效、安全的生活环境。其特点包括科技赋能、资源整合和以人为本,旨在实现社区现代化管理,提高居民满意度。未来将应用更多创新技术,推动社区治理现代化。
385 16
|
12月前
|
人工智能 监控 数据挖掘
CAP 快速部署项目体验评测
本文介绍了使用CAP(云应用平台)的体验,涵盖模板选择与部署、性能测试与监控、二次开发与调试等方面。作者选择了RAG模板并成功部署,通过性能测试验证了应用的稳定性,进行了二次开发并提出改进建议。CAP在模板库丰富度、产品引导与功能满足度等方面表现良好,但在实时数据分析和定制化方面仍有提升空间。总体而言,CAP是一个强大的云应用开发平台,适合快速构建和管理应用。
180 19
|
11月前
|
数据可视化 JavaScript 前端开发
数据可视化进阶:D3.js在复杂数据可视化中的应用
【10月更文挑战第26天】数据可视化是将数据以图形、图表等形式呈现的过程,帮助我们理解数据和揭示趋势。D3.js(Data-Driven Documents)是一个基于JavaScript的库,使用HTML、SVG和CSS创建动态、交互式的数据可视化。它通过数据驱动文档的方式,将数据与DOM元素关联,提供高度的灵活性和定制性,适用于复杂数据的可视化任务。 示例代码展示了如何使用D3.js创建一个简单的柱状图,展示了其基本用法。D3.js的链式调用和回调函数机制使代码简洁易懂,支持复杂的布局和交互逻辑。
371 3
|
Java 中间件 网络架构
分布式协调服务中间件ZooKeeper 入门(1)-ZK的介绍与特性
一、Zookeeper简介 Zookeeper是一个服务,是一个分布式协调技术,他提供高性能,分布式的协调服务。主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成“脏数据”的后果。
3238 99
|
SQL 存储 关系型数据库
MYSQL中锁的各种模式与类型
在日常开发工作中,我们几乎需要天天与数据库打交道,作为一名只会CRUD的SQL BOY,除了每天用mybatis-generator自动生成DAO层代码之外,我们几乎不用去care数据库中如何处理并发请求,但是突然某一天MYSQL数据库告警了,出现了死锁,我们的内心慌的一匹,不禁想问:这不就是个普通查询吗,咋还锁起来了? 为了避免慌乱的表情被主管捕捉到,我们需要提前了解一下数据库中到底有哪些锁。 在MySQL中,其实将锁分成了两类:锁类型(lock_type)和锁模式(lock_mode)。 锁类型描述的锁的粒度,也就是把锁具体加在什么地方;而锁模式描述的是到底加的是什么锁,是读锁还是写
MYSQL中锁的各种模式与类型
|
数据采集 安全 算法
对风险用户“从不信任”,设备指纹的防篡改指南
一定程度上,设备指纹之于人的重要意义不亚于身份证。为什么这么说?大多数人可能都有过这样的经历:刷短视频时,只要我们点赞了某个视频,那么下一次再刷视频时,系统就会推荐更多类似的视频;
455 0
对风险用户“从不信任”,设备指纹的防篡改指南