当前位置: 首页 > news >正文

PL/pgSQL RETURNS TABLE 例子

实验如下:

RETURNS TABLE 中的变量名和SQL文中的变量名同名时,执行时会出错:

复制代码
pgsql=# create table sales(itemno integer,quantity integer,price numeric);
CREATE TABLE
pgsql=# insert into sales values (100,15,11.2),(101,22,12.3);
INSERT 0 2
pgsql=# CREATE FUNCTION extended_sales(p_itemno int)
pgsql-# RETURNS TABLE(quantity int, total numeric) AS $$
pgsql$# BEGIN
pgsql$#     RETURN QUERY SELECT quantity, quantity * price FROM sales
pgsql$#                  WHERE itemno = p_itemno;
pgsql$# END;
pgsql$# $$ LANGUAGE plpgsql;
CREATE FUNCTION
pgsql=# 
复制代码
复制代码
pgsql=# select extended_sales(101);
ERROR:  column reference "quantity" is ambiguous
LINE 1: SELECT quantity, quantity * price FROM sales
               ^
DETAIL:  It could refer to either a PL/pgSQL variable or a table column.
QUERY:  SELECT quantity, quantity * price FROM sales
                 WHERE itemno = p_itemno
CONTEXT:  PL/pgSQL function "extended_sales" line 2 at RETURN QUERY
pgsql=# 
复制代码

此时,可以如此操作:

复制代码
pgsql$#     RETURN QUERY SELECT sales.quantity, sales.quantity * sales.price FROM sales
pgsql$#                  WHERE itemno = p_itemno;
pgsql$# END;
pgsql$# $$ LANGUAGE plpgsql;
CREATE FUNCTION
pgsql=# 
pgsql=# select extended_sales(101);
 extended_sales 
----------------
 (22,270.6)
(1 row)

pgsql=#
复制代码

也可以采用别的名称:

复制代码
pgsql=# CREATE FUNCTION extended_sales(p_itemno int)
pgsql-# RETURNS TABLE(tmp_quantity int, tmp_total numeric) AS $$
pgsql$# BEGIN
pgsql$#   RETURN QUERY SELECT quantity AS tmp_quantity, quantity * price AS tmp_total 
pgsql$#     FROM sales
pgsql$#         WHERE itemno = p_itemno;
pgsql$# END;
pgsql$# $$ LANGUAGE plpgsql;
CREATE FUNCTION
pgsql=# 
pgsql=# select extended_sales(101);
 extended_sales 
----------------
 (22,270.6)
(1 row)

pgsql=# 
复制代码







本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/p/3190604.html,如需转载请自行联系原作者

相关文章:

  • 贝塞尔曲线学习
  • 2007浙大复试上机考试题目2--统计字符
  • static作用(修饰函数、局部变量、全局变量)
  • 18 Issues in Current Deep Reinforcement Learning from ZhiHu
  • PC 微信扫码登陆
  • 创建表空间、新增用户、给用户赋予DBA权限 、删除用户下的上有数据表
  • 欢迎大家关注民工哥个人微信公众号
  • 我这样减少了26.5M Java内存!
  • JAVA 命令行参数解析,org.apache.commons.cli的使用
  • 几款网络测试工具总结
  • CentOS7 添加路由命令
  • IDEA web项目部署运行Tomcat
  • Maven国内高速镜像
  • 如何优雅的拔盘?
  • EF 小数位的保留
  • 345-反转字符串中的元音字母
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • bearychat的java client
  • ERLANG 网工修炼笔记 ---- UDP
  • express + mock 让前后台并行开发
  • MaxCompute访问TableStore(OTS) 数据
  • Vim Clutch | 面向脚踏板编程……
  • Vue实战(四)登录/注册页的实现
  • 创建一种深思熟虑的文化
  • 基于HAProxy的高性能缓存服务器nuster
  • 聊聊flink的TableFactory
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 使用putty远程连接linux
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 我这样减少了26.5M Java内存!
  • 移动端唤起键盘时取消position:fixed定位
  • 用Visual Studio开发以太坊智能合约
  • ​Java并发新构件之Exchanger
  • # Apache SeaTunnel 究竟是什么?
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #162 (Div. 2)
  • (30)数组元素和与数字和的绝对差
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转载)利用webkit抓取动态网页和链接
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET命令行(CLI)常用命令
  • .NET企业级应用架构设计系列之技术选型
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @AutoConfigurationPackage的使用
  • @WebServiceClient注解,wsdlLocation 可配置