DO — 執行匿名程式碼塊
DO [ LANGUAGElang_name]code
DO 執行一個匿名程式碼塊,或者說是一個過程語言中的瞬時匿名函式。
程式碼塊被視為一個沒有引數、返回void的函式體。它只會被解析和執行一次。
可選的LANGUAGE子句可以寫在程式碼塊的前面或後面。
code要執行的過程語言程式碼。這必須像CREATE FUNCTION一樣,指定為一個字串字面量。推薦使用美元引用字面量。
lang_name程式碼所用過程語言的名稱。如果省略,預設是plpgsql。
所用的過程語言必須已經透過CREATE EXTENSION安裝到當前資料庫中。plpgsql是預設安裝的,但其他語言則不是。
使用者必須對該過程語言擁有USAGE許可權,或者如果該語言不受信任,則必須是超級使用者。這與在語言中建立函式的許可權要求相同。
如果在事務塊中執行DO,則過程程式碼不能執行事務控制語句。只有當DO在自己的事務中執行時,才允許使用事務控制語句。
將模式public中所有檢視的所有許可權授予角色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標準中沒有DO語句。
如果您在文件中發現任何不正確之處、與您對特定功能的實際體驗不符之處,或者需要進一步說明之處,請使用此表格報告文件問題。