婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PostgreSQL 定義返回表函數的操作

PostgreSQL 定義返回表函數的操作

熱門標簽:400電話申請客服 移動外呼系統模擬題 濟南外呼網絡電話線路 電話機器人怎么換人工座席 廣州電銷機器人公司招聘 天津開發區地圖標注app 電銷機器人能補救房產中介嗎 地圖標注要花多少錢 江蘇400電話辦理官方

本文我們學習如何在PostgreSQL 開發返回表函數。

示例數據表

我們使用的示例數據庫表為film,如下圖所示:

示例1

第一個函數發揮所有滿足條件film表記錄,這里使用ilike操作,和like類似,但不區分大小寫:

CREATE OR REPLACE FUNCTION get_film (p_pattern VARCHAR) 
 RETURNS TABLE (
 film_title VARCHAR,
 film_release_year INT
) 
AS $$
BEGIN
 RETURN QUERY SELECT
 title,
 cast( release_year as integer)
 FROM
 film
 WHERE
 title ILIKE p_pattern ;
END; $$ 
 
LANGUAGE 'plpgsql';

get_film(varchar) 函數接收一個參數,為匹配title字段的模式字符串。

為了從函數中返回表,需要使用return table語法,以及表的字段,每個字段使用逗號分隔。

在函數中,我們返回一個查詢(select 語句)作為返回結果。注意select語句中的字段必須和返回表的字段類型一致。因為film表中release_year的數據類型不是integer,所以我們要使用cast函數轉換成integer。

下面進行測試該函數:

SELECT
 *
FROM
 get_film ('Al%');

我們調用該函數,獲取所有title以Al開頭的記錄:

注意,我們也可以使用下面語句進行調用:

SELECT
 get_film ('Al%');

PostgreSQL 返回已一列數組形式返回表。

示例2

實際開發中,我們經常需要在返回函數結果集之前處理每一行記錄。下面通過示例說明:

CREATE OR REPLACE FUNCTION get_film (p_pattern VARCHAR,p_year INT) 
 RETURNS TABLE (
 film_title VARCHAR,
 film_release_year INT
) AS $$
DECLARE 
 var_r record;
BEGIN
 FOR var_r IN(SELECT title, release_year 
   FROM film 
   WHERE title ILIKE p_pattern 
   AND release_year = p_year) 
 LOOP
 film_title := upper(var_r.title) ; 
 film_release_year := var_r.release_year;
 
 RETURN NEXT;
 END LOOP;
END; $$ 
LANGUAGE 'plpgsql';

該函數與上一個名稱一樣get_film(varchar,int),但有兩個參數:

第一個參數匹配title字段的模式字符串。仍然使用ilike操作執行搜索。

第二個參數是file的發行年度。

這兩個函數在PostgreSQL中稱為重載函數。我們想在返回結果之前處理每一行,使用 FOR LOOP語句進行處理。內部每個迭代中使用UPPER函數是film title 變為大寫,僅為了演示而已。

return next語句是增加一行至函數結果集中,不斷執行循環,在每次迭代中生成結果集。

下面進行測試:

SELECT
 *
FROM
 get_film ('%er', 2006);

總結

現在你應該理解了如何開發返回表的函數,主要使用return query 和 return next 語句。

補充:Postgres自定義函數返回記錄集(虛擬表結構)

看實例吧~

CREATE OR REPLACE FUNCTION fun_get_real_inv_qty(pvOrderId varchar)
 RETURNS SETOF record AS
$BODY$begin
--drop table if exists tmp_1 ;
--create temp table tmp_1 as 
return query 
	select fp_prod_id,fq_part_no,fq_name, 
	sum(case when fo_type='P' then -fp_qty 	 
		 else 0
	  end 
	) as purchase_qty,
	sum(case when fo_type='S' then -fp_qty 	 
		 else 0
	  end 
	) as saleqty,
	sum(case when fo_type='S' then -fp_qty 
		 when fo_type='P' then fp_qty 
		 else 0
	  end ) as surplus_qty from tp_send_det,to_send_note,tq_prod_mstr
	where fp_order_id=pvOrderId and fo_note_id=fp_note_id and fq_prod_id=fp_prod_id and fq_type='I'
	group by fp_prod_id,fq_part_no,fq_name ;
end;$BODY$
 LANGUAGE plpgsql VOLATILE
 COST 100
 ROWS 10;
ALTER FUNCTION fun_get_real_inv_qty()
 OWNER TO postgres;

上面是例子,調用這個函數:

select * from fun_get_real_inv_qty('D302') f(fp_prod_id bigint,fq_part_no varchar ,fq_name varchar ,purchase_qty numeric ,saleqty numeric ,surplus_qty numeric );

f...后面帶的是記錄的column定義 必須與函數輸出的列數量及每列數據類型一一對應.

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Postgresql去重函數distinct的用法說明
  • PostgreSQL的generate_series()函數的用法說明
  • postgresql合并string_agg函數的實例
  • PostgreSQL批量修改函數擁有者的操作
  • PostgreSQL數據類型格式化函數操作
  • 在postgresql數據庫中判斷是否是數字和日期時間格式函數操作
  • Postgresql自定義函數詳解
  • postgresql 循環函數的簡單實現操作

標簽:溫州 辛集 榆林 昭通 海西 寶雞 杭州 濮陽

巨人網絡通訊聲明:本文標題《PostgreSQL 定義返回表函數的操作》,本文關鍵詞  PostgreSQL,定義,返回,表,函數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PostgreSQL 定義返回表函數的操作》相關的同類信息!
  • 本頁收集關于PostgreSQL 定義返回表函數的操作的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲自拍偷拍综合| 亚洲国产精品成人综合| 日韩欧美中文一区二区| 天天av天天翘天天综合网色鬼国产| 99久久久免费精品国产一区二区| 蜜臀av一区二区在线观看| 天堂在线亚洲视频| 欧美日韩一区视频| 欧美日韩国产首页| 亚洲高清免费一级二级三级| 欧美精品电影在线播放| 免费人成在线不卡| 蜜乳av一区二区| 欧美视频精品在线| 午夜影院在线观看欧美| 日韩一区二区在线免费观看| 精品国产一区a| 黄色精品一二区| 日韩欧美久久久| 天天做天天摸天天爽国产一区| 免费人成精品欧美精品| 欧美日韩国产大片| 日韩视频在线你懂得| 亚洲在线中文字幕| 51久久夜色精品国产麻豆| 国产精品亚洲午夜一区二区三区 | 麻豆国产精品777777在线| 日韩欧美在线影院| 99久久久久久| 日韩一级高清毛片| 亚洲愉拍自拍另类高清精品| 国产麻豆精品95视频| 亚洲品质自拍视频网站| 欧美v国产在线一区二区三区| 亚洲福利电影网| 国产欧美视频一区二区| 国产在线播放一区三区四| 亚洲精品videosex极品| 久久久天堂av| 欧美日韩中文精品| 99久久久久久99| 激情综合五月天| 午夜不卡av在线| 国产精品毛片久久久久久| 成人综合激情网| 国产农村妇女精品| 成人污视频在线观看| 水野朝阳av一区二区三区| 国产精品日韩成人| 岛国av在线一区| 日韩女优毛片在线| 在线看国产一区| 国产·精品毛片| 欧美aaa在线| 亚洲美女少妇撒尿| 亚洲欧美乱综合| 国产女人18毛片水真多成人如厕| 丁香五精品蜜臀久久久久99网站| 精品成人一区二区三区| 欧美日韩亚洲综合在线 | 中文字幕国产一区| 国产高清久久久| 日韩精品国产欧美| 日本va欧美va精品| 日本不卡视频在线观看| 日本最新不卡在线| 日韩电影在线观看电影| 美女爽到高潮91| 久久91精品国产91久久小草| 国内成人精品2018免费看| 国产精品亚洲第一区在线暖暖韩国| 日韩一级完整毛片| 日韩一区二区电影| 亚洲综合色成人| 国产精品视频在线看| 在线观看不卡一区| 欧美性猛片aaaaaaa做受| 欧美日韩一区二区三区高清| 欧美美女一区二区三区| 欧美xxxxxxxx| 91在线视频在线| 日本乱人伦一区| 欧美精品国产精品| 国产视频在线观看一区二区三区| 欧美性色黄大片手机版| 日本精品视频一区二区三区| 欧美精品自拍偷拍动漫精品| 久久久噜噜噜久久中文字幕色伊伊| 91婷婷韩国欧美一区二区| 色呦呦国产精品| 国产成人夜色高潮福利影视| 尤物av一区二区| 日本中文字幕不卡| 国产另类ts人妖一区二区| 欧美综合亚洲图片综合区| 精品1区2区在线观看| 亚洲精选视频免费看| 日韩欧美国产不卡| 国产精品网曝门| 五月天精品一区二区三区| 国产福利一区二区三区视频在线 | 九九九精品视频| 国产成a人亚洲精| 欧美日韩另类一区| 成人精品视频网站| 欧美性大战久久久久久久蜜臀| 成人午夜精品在线| 91精品国产综合久久国产大片| 欧美日韩国产首页| 久久综合狠狠综合久久激情| 亚洲同性同志一二三专区| 激情成人午夜视频| 7878成人国产在线观看| 亚洲黄网站在线观看| 成人性生交大片免费看中文网站| 久久99国产精品久久99果冻传媒| 午夜精品免费在线| 99久久精品免费看| 99综合电影在线视频| 国产白丝网站精品污在线入口| 寂寞少妇一区二区三区| 在线精品视频一区二区| 国产片一区二区三区| 免费精品99久久国产综合精品| 亚洲mv在线观看| a4yy欧美一区二区三区| 中文字幕精品三区| 国产精品一区二区男女羞羞无遮挡| 精品一区二区在线看| 欧美日韩一区二区三区四区 | 欧美主播一区二区三区美女| 国产天堂亚洲国产碰碰| 国产一区在线观看视频| 99精品桃花视频在线观看| 韩日精品视频一区| 日韩一级片网站| 日韩电影一区二区三区四区| 成人黄色电影在线| 精品播放一区二区| 韩国成人福利片在线播放| 26uuu国产日韩综合| 亚洲色图视频网| 99r精品视频| 亚洲精品视频在线观看免费| 色久优优欧美色久优优| 亚洲第一搞黄网站| 69堂成人精品免费视频| 免费观看在线综合色| 欧美精品一区在线观看| 国产一区二区不卡老阿姨| 国产精品私人影院| 91福利视频网站| 日本成人在线电影网| 久久久久88色偷偷免费| 99国产精品国产精品毛片| 欧美一区二区三区在线观看视频 | 国产欧美一区二区在线| 国产成人av一区二区三区在线观看| 成人久久18免费网站麻豆 | 国产在线精品免费av| 中文无字幕一区二区三区| 91丨porny丨国产| 天天操天天综合网| 久久久久久久久一| 日本丰满少妇一区二区三区| 亚洲国产精品久久久久婷婷884| 国产在线播放一区| 综合精品久久久| 欧美日韩国产三级| 成人小视频在线| 久久尤物电影视频在线观看| 国产在线麻豆精品观看| 中文字幕一区二区三区在线观看| 韩国三级中文字幕hd久久精品| 色综合久久88色综合天天免费| 7777女厕盗摄久久久| 国产精品麻豆一区二区| 欧美性一二三区| 成人黄色在线网站| 免费成人小视频| 91黄色免费版| 精品一区免费av| 午夜久久福利影院| 亚洲青青青在线视频| 精品va天堂亚洲国产| 欧美性一区二区| 色综合久久中文综合久久97| 亚洲色欲色欲www| 欧美成人精品高清在线播放| 日本精品一区二区三区高清 | 91精品国模一区二区三区| 粉嫩绯色av一区二区在线观看| 久久久久国色av免费看影院| 欧美性猛交xxxxxx富婆| 丁香婷婷综合激情五月色| 久久久久久久综合| 日韩精品福利网| 亚洲免费观看高清完整版在线观看| 日韩免费成人网| 中文欧美字幕免费|