zoukankan      html  css  js  c++  java
  • 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=# 
  • 相关阅读:
    sqlplus 登陆使用
    PLSQL设置显示的字符集及设置
    PL/SQL Developer使用技巧、快捷键
    微信小程序开发常见问题分析
    微信小程序如何使用PHP语言获取数据
    小程序获取网络类型代码
    微信小程序http转https
    小程序和Vue有哪些区别
    微信小程序时间标签与范围联动设计实现
    微信小程序http接口封装怎么实现
  • 原文地址:https://www.cnblogs.com/gaojian/p/3190604.html
Copyright © 2011-2022 走看看