博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PL/pgSQL RETURNS TABLE 例子
阅读量:6508 次
发布时间:2019-06-24

本文共 1642 字,大约阅读时间需要 5 分钟。

实验如下:

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

pgsql=# create table sales(itemno integer,quantity integer,price numeric);CREATE TABLEpgsql=# insert into sales values (100,15,11.2),(101,22,12.3);INSERT 0 2pgsql=# CREATE FUNCTION extended_sales(p_itemno int)pgsql-# RETURNS TABLE(quantity int, total numeric) AS $$pgsql$# BEGINpgsql$#     RETURN QUERY SELECT quantity, quantity * price FROM salespgsql$#                  WHERE itemno = p_itemno;pgsql$# END;pgsql$# $$ LANGUAGE plpgsql;CREATE FUNCTIONpgsql=#
pgsql=# select extended_sales(101);ERROR:  column reference "quantity" is ambiguousLINE 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_itemnoCONTEXT:  PL/pgSQL function "extended_sales" line 2 at RETURN QUERYpgsql=#

此时,可以如此操作:

pgsql$#     RETURN QUERY SELECT sales.quantity, sales.quantity * sales.price FROM salespgsql$#                  WHERE itemno = p_itemno;pgsql$# END;pgsql$# $$ LANGUAGE plpgsql;CREATE FUNCTIONpgsql=# 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$# BEGINpgsql$#   RETURN QUERY SELECT quantity AS tmp_quantity, quantity * price AS tmp_total pgsql$#     FROM salespgsql$#         WHERE itemno = p_itemno;pgsql$# END;pgsql$# $$ LANGUAGE plpgsql;CREATE FUNCTIONpgsql=# pgsql=# select extended_sales(101); extended_sales ---------------- (22,270.6)(1 row)pgsql=#

转载地址:http://nhzfo.baihongyu.com/

你可能感兴趣的文章
数据结构Java实现04----循环链表、仿真链表
查看>>
ecshop如何判断缓存文件是否能更新
查看>>
打印xls注意事项
查看>>
JSP模板文本
查看>>
javascript于boolean类型转换,运营商&&和|| 返回值
查看>>
iOS远程推送之友盟Push
查看>>
Socket tips: UDP Echo service - Client code
查看>>
NYOJ 1076 计划数(公式 要么 递归)
查看>>
Loading half a billion rows into MySQL---转载
查看>>
iOS边练边学--通知机制和键盘处理小练习
查看>>
PHP源代码生成 main/config.w32.h
查看>>
深入分析面向对象中的封装作用
查看>>
JAVA 位操作学习
查看>>
mybatis实战教程(mybatis in action)之三:实现数据的增删改查
查看>>
【转】mysql的cardinality异常,导致索引不可用
查看>>
Babel6.x 转换ES6
查看>>
深刻理解Python中的元类(metaclass)
查看>>
mysql 5.7 zip 文件在 windows下的安装
查看>>
Java编程的逻辑 (44) - 剖析TreeSet
查看>>
address元素
查看>>