中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pl/pgql語句如何在Postgresql中使用

發布時間:2021-01-05 14:29:40 來源:億速云 閱讀:190 作者:Leah 欄目:開發技術

本篇文章為大家展示了pl/pgql語句如何在Postgresql中使用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Postgresql的pl/pgql用法--將多條執行語句作為一個事務

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 
$$;

補充:PostgreSql 的PL/pgSQL 塊結構 (在pgAdmin查詢工具中如何執行語句塊)

本文我們學習PL/pgSQL結構塊,包括如何寫結構塊和執行結構塊。

什么是結構塊

PL/pgSQL是結構塊語言,因此,PL/pgSQL函數或過程是通過結構塊進行組織。完整結構塊的語法如下:

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

詳細說明如下:

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

塊可以有個可選的標簽在開始和結尾處。如果你想在塊主體中使用exit語句或限定塊中聲明的變量名稱時,需要使用塊標簽。

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

PL/pgSQL 塊結構示例

下面示例描述一個簡單塊結構,一般稱為匿名塊:

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

運行結果:

NOTICE: The current value of counter is 1

從pgAdmin中執行塊,點擊圖示按鈕:

pl/pgql語句如何在Postgresql中使用

注意DO語句不屬于塊結構。它用于執行匿名塊。PostgreSQL 在9.0版本中引入DO語句。

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

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

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

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

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

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

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

PL/pgSQL 子結構塊

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

pl/pgql語句如何在Postgresql中使用

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

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;

執行結果如下:

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。

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

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

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

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

上述內容就是pl/pgql語句如何在Postgresql中使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

于田县| 四川省| 玉山县| 星座| 沙雅县| 东兴市| 香河县| 江永县| 石阡县| 凤阳县| 陆河县| 宕昌县| 广宗县| 遂川县| 龙海市| 政和县| 新安县| 霍山县| 辽宁省| 高平市| 江城| 云安县| 衡南县| 夏津县| 诸城市| 蓬安县| 岱山县| 永宁县| 罗定市| 页游| 城口县| 北碚区| 乾安县| 阿城市| 伊吾县| 滨海县| 罗城| 通榆县| 丹寨县| 教育| 浮梁县|