W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
DO — 執(zhí)行一個(gè)匿名代碼塊
DO [ LANGUAGE lang_name
] code
DO
執(zhí)行一個(gè)匿名代碼塊,或者換句話說 執(zhí)行一個(gè)以一種過程語言編寫的瞬時(shí)匿名函數(shù)。
代碼塊就好像是一個(gè)沒有參數(shù)并且返回void
的函數(shù)的函數(shù)體。 它會(huì)被在一次時(shí)間內(nèi)解析并且執(zhí)行。
可選的LANGUAGE
子句可以卸載代碼塊之前或者之后。
code
要被執(zhí)行的過程語言代碼。就像在 CREATE FUNCTION
中一樣,必須把它指定為一個(gè) 字符串。推薦使用一個(gè)美元引用的文本。
lang_name
編寫該代碼的過程語言的名稱。如果省略,默認(rèn)為plpgsql
。
要使用的過程語言必須已經(jīng)用CREATE EXTENSION
安裝在 當(dāng)前數(shù)據(jù)庫中。默認(rèn)已經(jīng)安裝了plpgsql
,但是其他語言沒有被 安裝。
用戶必須擁有該過程語言的USAGE
特權(quán),如果該語言 是不可信的則必須是一個(gè)超級(jí)用戶。這和創(chuàng)建一個(gè)該語言的函數(shù)對(duì) 特權(quán)的要求相同。
如果在事務(wù)塊中執(zhí)行DO
,過程代碼則無法執(zhí)行事務(wù)控制語句。只有在自己的事務(wù)中執(zhí)行DO
時(shí),才允許使用事務(wù)控制語句。
把模式public
中所有視圖上的所有特權(quán)授予 給角色webuser
:
DO $$DECLARE r record;
BEGIN
FOR r IN SELECT table_schema, table_name FROM information_schema.tables
WHERE table_type = 'VIEW' AND table_schema = 'public'
LOOP
EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser';
END LOOP;
END$$;
SQL 標(biāo)準(zhǔn)中沒有DO
語句。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: