最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Postgresql 存儲過程(plpgsql)兩層for循環(huán)的操作

 更新時間:2021年01月16日 17:03:05   作者:snowwang928  
這篇文章主要介紹了Postgresql 存儲過程(plpgsql)兩層for循環(huán)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

項目中遇到測試,需要造4500數(shù)據(jù),而且需要分部門和日期,一個部門一天30條數(shù)據(jù),剩下的鋪墊數(shù)據(jù)可以一個部門一天100w左右數(shù)據(jù),這里,每次變換部門,日期,需要操作至少300次,想到用存儲過程寫一個函數(shù)進行

首先,了解存儲過程的語法:

CREATE [ OR REPLACE ] FUNCTION
  name( [ [argmode] [argname]argtype[ { DEFAULT | = }default_expr] [, ...] ] )
    [ RETURNSrettype
     | RETURNS TABLE (column_namecolumn_type[, ...] ) ]
  { LANGUAGElang_name
    | WINDOW
| IMMUTABLE | STABLE | VOLATILE
    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
    | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
    | COSTexecution_cost
    | ROWSresult_rows
    | SETconfiguration_parameter{ TOvalue| =value| FROM CURRENT }
    | AS 'definition'
    | AS 'obj_file', 'link_symbol'
  } ...
    [ WITH (attribute[, ...] ) ]
————————————————

CREATE [ OR REPLACE ] FUNCTION--創(chuàng)建一個函數(shù),若有此函數(shù),即取代重新創(chuàng)建 name -------函數(shù)名稱

RETURNS---函數(shù)返回類型

具體的函數(shù)聲明,請參考[postgresql存儲過程]

下面說我寫的函數(shù):

CREATE OR REPLACE FUNCTION "xue"."insert_into_table"()
 RETURNS "pg_catalog"."void" AS $BODY$
DECLARE tmp VARCHAR(1024);
DECLARE n integer;
DECLARE i integer;
DECLARE inst_seq_no CURSOR FOR
  SELECT inst_seq_no FROM t where no in (
  '111','22','223','33','4358',
   '233','449','315','35335');
BEGIN
  RAISE NOTICE '------------start----------';
  i := 30;
  FOR stmt IN no LOOP
    n := 30;
    FOR n IN n..i LOOP    
      insert into test2 (NO,
      test_NO,TIME,USER_NO,SEQ_NO,
      NAME,USER_NO1,USER_NAME,CODE,USER_NO2,OPROR_NAME,
      REVIEW_TIME,DESC,
      VAL1,VAL2,DATE,UPD_TIME,DEL_FLAG) values
      (nextval('seq_test2'),n,'20190910',n,stmt.seq_no,n,n,n,n,n,n,'20190910','01','',n,n,'20190910',
      '20190909','0');
      END LOOP;
       n = n+30;
      i = i+30;
  END LOOP;
  RAISE NOTICE '-----------finished---------';
END;
$BODY$
 LANGUAGE plpgsql VOLATILE
 COST 100`

很簡單的邏輯,但是在修改了三四遍才實現(xiàn),這個第二次寫存儲過程,很多語法不是很熟悉,要注意的如:

1.`變量聲明要用DECLARE

2.``游標 CURSOR 的用法

3.for循環(huán)要在begin中執(zhí)行,

4.循環(huán)中要用“:=”

補充:Postgresql中存儲過程(函數(shù))調(diào)用存儲過程(函數(shù))時應(yīng)用注意的問題

在postgresql中我們在執(zhí)行存儲過程中往往會使用select 存儲過程,但是如果存儲過程中再調(diào)用 存儲過程時,就不能這樣用了,應(yīng)該用perform 存儲過程,可以去參考官方文檔的說明

執(zhí)行一個沒有結(jié)果的表達式或者命令

有時候我們希望計算一個表達式或者一個命令,但是卻丟棄其結(jié)果(通常因為我們經(jīng)常調(diào)用一些存在有用的副作用但是不存在有用結(jié)果值的函數(shù))。 要在 PL/pgSQL 里干這件事, 你可以使用PERFORM語句:

PERFORM query;

這條語句執(zhí)行一個 query并且丟棄結(jié)果。 query 的寫法和你平常寫 SQL SELECT 命令是一樣的, 只是把開頭的關(guān)鍵字 SELECT 替換成 PERFORM。 PL/pgSQL 的變量和平常一樣代換到命令中。 同樣,如果命令生成至少一行,那么特殊的變量 FOUND 設(shè)置為真,如果沒有生成行,則為假。

注意: 我們可能希望沒有INTO子句的SELECT也能滿足這樣的需要, 但是目前可以接受的唯一的方法是PERFORM。

一個例子:

PERFORM create_mv('cs_session_page_requests_mv', my_query);

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

相關(guān)文章

  • Postgresql數(shù)據(jù)庫中的json類型字段使用示例詳解

    Postgresql數(shù)據(jù)庫中的json類型字段使用示例詳解

    JSON的主要用于在服務(wù)器與web應(yīng)用之間傳輸數(shù)據(jù),這篇文章主要介紹了Postgresql數(shù)據(jù)庫中的json類型字段使用,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • 解決sqoop import 導(dǎo)入到hive后數(shù)據(jù)量變多的問題

    解決sqoop import 導(dǎo)入到hive后數(shù)據(jù)量變多的問題

    這篇文章主要介紹了解決sqoop import 導(dǎo)入到hive后數(shù)據(jù)量變多的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 基于postgresql數(shù)據(jù)庫鎖表問題的解決

    基于postgresql數(shù)據(jù)庫鎖表問題的解決

    這篇文章主要介紹了基于postgresql數(shù)據(jù)庫鎖表問題的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • postgresql 修改字段長度的操作

    postgresql 修改字段長度的操作

    這篇文章主要介紹了postgresql 修改字段長度的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL之分區(qū)表(partitioning)

    PostgreSQL之分區(qū)表(partitioning)

    通過合理的設(shè)計,可以將選擇一定的規(guī)則,將大表切分多個不重不漏的子表,這就是傳說中的partitioning。比如,我們可以按時間切分,每天一張子表,比如我們可以按照某其他字段分割,總之了就是化整為零,提高查詢的效能
    2016-11-11
  • PostgreSQL pg_ctl start啟動超時實例分析

    PostgreSQL pg_ctl start啟動超時實例分析

    這篇文章主要給大家介紹了關(guān)于PostgreSQL pg_ctl start啟動超時的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • PostgreSQL教程(十五):系統(tǒng)表詳解

    PostgreSQL教程(十五):系統(tǒng)表詳解

    這篇文章主要介紹了PostgreSQL教程(十五):系統(tǒng)表詳解,本文講解了pg_class、pg_attribute、pg_attrdef、pg_authid、pg_auth_members、pg_constraint、pg_tablespace、pg_namespace、pg_database等表的作用和字段介紹,需要的朋友可以參考下
    2015-05-05
  • Postgresql數(shù)據(jù)庫角色創(chuàng)建登錄詳解

    Postgresql數(shù)據(jù)庫角色創(chuàng)建登錄詳解

    這篇文章主要為大家介紹了Postgresql數(shù)據(jù)庫角色創(chuàng)建登錄詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Postgresql psql文件執(zhí)行與批處理多個sql文件操作

    Postgresql psql文件執(zhí)行與批處理多個sql文件操作

    這篇文章主要介紹了Postgresql psql文件執(zhí)行與批處理多個sql文件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL upsert(插入更新)數(shù)據(jù)的操作詳解

    PostgreSQL upsert(插入更新)數(shù)據(jù)的操作詳解

    這篇文章主要介紹了PostgreSQL upsert(插入更新)教程詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01

最新評論

库车县| 马龙县| 广安市| 托里县| 广水市| 宣城市| 北辰区| 庆阳市| 陕西省| 海南省| 石首市| 霍林郭勒市| 婺源县| 文登市| 贵港市| 崇明县| 浑源县| 莱州市| 上思县| 台江县| 大厂| 榕江县| 油尖旺区| 儋州市| 太保市| 伊宁县| 绥滨县| 永济市| 新安县| 山丹县| 长治市| 临汾市| 平利县| 双城市| 巫山县| 屏山县| 古浪县| 铜川市| 富宁县| 濮阳县| 焉耆|