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

Postgresql的pl/pgql使用操作--將多條執(zhí)行語句作為一個(gè)事務(wù)

 更新時(shí)間:2021年01月05日 11:04:25   作者:siwluxuefeng  
這篇文章主要介紹了Postgresql的pl/pgql使用操作--將多條執(zhí)行語句作為一個(gè)事務(wù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

Postgresql的pl/pgql用法--將多條執(zhí)行語句作為一個(gè)事務(wù)

DO $$ 
DECLARE 
 v_id bigint; 
begin 
 --1.
 INSERT INTO r_test_a (name, value, unit, mode, uid, create_ts) 
 SELECT 't_t','','',2,0, extract(epoch from now())::bigint 
 WHERE NOT EXISTS (SELECT id FROM r_test_a WHERE name = 't_t' AND value = '' AND unit = '' AND uid =0);
 --2.
 SELECT id into v_id from r_test_a WHERE name = 't_t' AND value = '' AND unit = '' AND uid = 0;
 --3.
 DELETE FROM r_test_b a WHERE a.obj_id = 'xxx' AND a.file_id = 'ooo' AND a.id IN (SELECT id FROM r_test_a b WHERE b.name = 't_t' AND b.uid=0); 
 --4.
 INSERT INTO r_test_b (id, obj_id, file_id, create_ts) SELECT v_id,'xxx','ooo', extract(epoch from now())::bigint ;
end 
$$;

補(bǔ)充:PostgreSql 的PL/pgSQL 塊結(jié)構(gòu) (在pgAdmin查詢工具中如何執(zhí)行語句塊)

本文我們學(xué)習(xí)PL/pgSQL結(jié)構(gòu)塊,包括如何寫結(jié)構(gòu)塊和執(zhí)行結(jié)構(gòu)塊。

什么是結(jié)構(gòu)塊

PL/pgSQL是結(jié)構(gòu)塊語言,因此,PL/pgSQL函數(shù)或過程是通過結(jié)構(gòu)塊進(jìn)行組織。完整結(jié)構(gòu)塊的語法如下:

[ <<label>> ]
[ DECLARE
 declarations ]
BEGIN
 statements;
 ...
END [ label ];

詳細(xì)說明如下:

塊有兩部分組成:聲明部分和主體部分。聲明部分是可選的,而主體部分是必須的。塊在end關(guān)鍵字后面使用分號(;)表示結(jié)束。

塊可以有個(gè)可選的標(biāo)簽在開始和結(jié)尾處。如果你想在塊主體中使用exit語句或限定塊中聲明的變量名稱時(shí),需要使用塊標(biāo)簽。

主體部分是編寫代碼的地方,每條語句需要使用分號結(jié)束。

PL/pgSQL 塊結(jié)構(gòu)示例

下面示例描述一個(gè)簡單塊結(jié)構(gòu),一般稱為匿名塊:

DO $$
<<first_block>>
DECLARE
 counter integer := 0;
BEGIN
 counter := counter + 1;
 RAISE NOTICE 'The current value of counter is %', counter;
END first_block $$;

運(yùn)行結(jié)果:

NOTICE: The current value of counter is 1 

從pgAdmin中執(zhí)行塊,點(diǎn)擊圖示按鈕:

注意DO語句不屬于塊結(jié)構(gòu)。它用于執(zhí)行匿名塊。PostgreSQL 在9.0版本中引入DO語句。

在聲明部分定義變量counter并設(shè)置為0.

在主體部分,是counter值加1,通過RAISE NOTICE語句輸出其值。

first_block 標(biāo)簽僅為了演示需要,本例中沒有啥意義。

** 什么是雙 ($$) 符號?**

($$) 符號 是單引號(')的替代符號。開發(fā)PL/pgSQL 時(shí),無論是函數(shù)或過程,必須把主體部分放在一個(gè)字符串中。因此必須對主體部分的單引號進(jìn)行轉(zhuǎn)義表示:

DO
'<<first_block>>
DECLARE
 counter integer := 0;
BEGIN 
 
 counter := counter + 1;
 RAISE NOTICE ''The current value of counter is %'', counter;
 
END first_block';

使用($$) 符號可以避免引號問題。也可以在$之間使用標(biāo)識,如之間使用標(biāo)識,如之間使用標(biāo)識,如function$ , procedureprocedureprocedure.

PL/pgSQL 子結(jié)構(gòu)塊

PL/pgSQL可以一個(gè)塊在另一個(gè)塊的主體中。一個(gè)塊嵌入在另一個(gè)塊中稱為子塊,包含子塊的塊稱為外部塊。

子塊用于組織語句,這樣大塊能被分為更小和更多邏輯子塊。子塊的變量的名稱可以與外部塊變量名稱同名,雖然這在實(shí)踐中不建議。當(dāng)在子塊中聲明一個(gè)與外部變量同名的變量,外部變量在子塊中被隱藏。如果需要訪問外部塊的變量,可以使用塊標(biāo)簽作為變量的限定符,如下面示例:

DO $$ 
<<outer_block>>
DECLARE
 counter integer := 0;
BEGIN 
 counter := counter + 1;
 RAISE NOTICE 'The current value of counter is %', counter;
 
 DECLARE 
  counter integer := 0;
 BEGIN 
  counter := counter + 10;
  RAISE NOTICE 'The current value of counter in the subblock is %', counter;
  RAISE NOTICE 'The current value of counter in the outer block is %', outer_block.counter;
 END;
 
 RAISE NOTICE 'The current value of counter in the outer block is %', counter;

執(zhí)行結(jié)果如下:

NOTICE: The current value of counter is 1
NOTICE: The current value of counter in the subblock is 10
NOTICE: The current value of counter in the outer block is 1
NOTICE: The current value of counter in the outer block is 1

首先,在外部塊中聲明變量counter。

接著在子塊中也聲明了一個(gè)同名變量。

在進(jìn)入子塊之前,變量的值為1。在子塊中,我們給變量counter值加10,然后打印出來。注意,這個(gè)改變僅影響子塊中counter變量。

然后,我們通過標(biāo)簽限定符引用外部變量:outer_block.counter

最后,我們打印外部塊變量,其值保持不變。

總結(jié)

本文我們學(xué)習(xí)PL/pgSQL塊結(jié)構(gòu),通過DO語句可以執(zhí)行匿名塊。

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

相關(guān)文章

  • PostgreSQL 實(shí)現(xiàn)登錄及修改密碼操作

    PostgreSQL 實(shí)現(xiàn)登錄及修改密碼操作

    這篇文章主要介紹了PostgreSQL 實(shí)現(xiàn)登錄及修改密碼操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL配置遠(yuǎn)程連接簡單圖文教程

    PostgreSQL配置遠(yuǎn)程連接簡單圖文教程

    這篇文章主要給大家介紹了關(guān)于PostgreSQL配置遠(yuǎn)程連接的相關(guān)資料,PostgreSQL是一個(gè)功能非常強(qiáng)大的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • PostgreSQL中如何將對象oid和對象名相互轉(zhuǎn)換

    PostgreSQL中如何將對象oid和對象名相互轉(zhuǎn)換

    文章介紹了在PostgreSQL中如何使用內(nèi)部數(shù)據(jù)類型將對象OID(對象標(biāo)識符)轉(zhuǎn)換為對象名,從而簡化系統(tǒng)視圖的關(guān)聯(lián)查詢,文章還提供了不同類型OID與對象名之間的轉(zhuǎn)換關(guān)系,并通過示例展示了如何將對象名轉(zhuǎn)換為OID
    2024-11-11
  • 詳解如何定位postgreSQL數(shù)據(jù)庫中未被使用過的索引

    詳解如何定位postgreSQL數(shù)據(jù)庫中未被使用過的索引

    在生產(chǎn)環(huán)境上,由于不規(guī)范的優(yōu)化措施,數(shù)據(jù)庫中可能存在大量的索引,并且相當(dāng)一部分的索引重未被使用過,今天帶大家如何找出這些索引,本文給大家介紹了定位postgreSQL數(shù)據(jù)庫中未被使用過的索引的方法,需要的朋友可以參考下
    2024-03-03
  • 使用PostgreSQL創(chuàng)建高級搜索引擎的代碼示例

    使用PostgreSQL創(chuàng)建高級搜索引擎的代碼示例

    本文我們將探索PostgreSQL中的全文搜索功能,并研究我們能夠復(fù)制多少典型搜索引擎功能,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2023-07-07
  • PostgreSQL 禁用全表掃描的實(shí)現(xiàn)

    PostgreSQL 禁用全表掃描的實(shí)現(xiàn)

    這篇文章主要介紹了PostgreSQL 禁用全表掃描的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL COALESCE使用方法代碼解析

    PostgreSQL COALESCE使用方法代碼解析

    這篇文章主要介紹了PostgreSQL COALESCE使用方法代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • PostgreSQL對GROUP BY子句使用常量的特殊限制詳解

    PostgreSQL對GROUP BY子句使用常量的特殊限制詳解

    這篇文章主要介紹了PostgreSQL對GROUP BY子句使用常量的特殊限制詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • postgresql 兩表關(guān)聯(lián)更新操作

    postgresql 兩表關(guān)聯(lián)更新操作

    這篇文章主要介紹了postgresql 兩表關(guān)聯(lián)更新操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Linux 上 定時(shí)備份postgresql 數(shù)據(jù)庫的方法

    Linux 上 定時(shí)備份postgresql 數(shù)據(jù)庫的方法

    這篇文章主要介紹了Linux 上 定時(shí)備份postgresql 數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02

最新評論

保德县| 涿鹿县| 海口市| 保德县| 新民市| 郁南县| 蒲江县| 贵定县| 改则县| 神农架林区| 武隆县| 贵南县| 厦门市| 临海市| 抚顺县| 松潘县| 阜宁县| 深泽县| 北海市| 阜阳市| 张掖市| 滁州市| 宝应县| 花莲市| 盈江县| 台中市| 河源市| 井陉县| 耒阳市| 平昌县| 汕尾市| 隆安县| 南郑县| 马龙县| 虞城县| 海门市| 洛扎县| 湖南省| 乌审旗| 湘阴县| 兴城市|