DO
  7
  SQL - Language Statements
 
 
  DO
  execute an anonymous code block
 
 
  DO
 
 
  anonymous code blocks
 
 
DO [ LANGUAGE lang_name ] code
 
 
  Description
  
   DO executes an anonymous code block, or in other
   words a transient anonymous function in a procedural language.
  
  
   The code block is treated as though it were the body of a function
   with no parameters, returning void>.  It is parsed and
   executed a single time.
  
  
   The optional LANGUAGE> clause can be written either
   before or after the code block.
  
 
 
  Parameters
  
   
    code
    
     
      The procedural language code to be executed.  This must be specified
      as a string literal, just as in CREATE FUNCTION>.
      Use of a dollar-quoted literal is recommended.
     
    
   
   
    lang_name
    
     
      The name of the procedural language the code is written in.
      If omitted, the default is plpgsql>.
     
    
   
  
 
 
  Notes
  
   The procedural language to be used must already have been installed
   into the current database by means of CREATE LANGUAGE>.
   plpgsql> is installed by default, but other languages are not.
  
  
   The user must have USAGE> privilege for the procedural
   language, or must be a superuser if the language is untrusted.
   This is the same privilege requirement as for creating a function
   in the language.
  
 
 
  Examples
  
   Grant all privileges on all views in schema public> to
   role 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$$;
 
 
  Compatibility
  
   There is no DO statement in the SQL standard.
  
 
 
  See Also