?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
DO [ LANGUAGE lang_name ] code
DO執(zhí)行一個(gè)匿名代碼塊, 或者換句話說是一個(gè)程序語言的順便匿名函數(shù)。
代碼塊被視為不帶參數(shù)的函數(shù)體,返回void。解析并執(zhí)行一個(gè)單獨(dú)的時(shí)間。
可以在代碼塊之前或者之后寫可選的LANGUAGE子句。
將被執(zhí)行的程序語言代碼。這必須被指定為一個(gè)字符串符,僅如在CREATE FUNCTION中。 建議使用美元符。
寫代碼使用的程序語言的名稱。若省略,默認(rèn)為plpgsql。
要被使用的程序語言必須是已經(jīng)通過CREATE LANGUAGE被安裝到當(dāng)前數(shù)據(jù)庫中。 plpgsql是么人安裝的,而其他語言并不是。
用戶必須對(duì)程序語言由USAGE權(quán)限,或者若語言是不可信的就必須是超級(jí)用戶。 這與用該語言創(chuàng)建函數(shù)的權(quán)限要求相同。
將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語句。