Updated on 2024-08-20 GMT+08:00

DO

Function

Executes an anonymous code block.

A code block is regarded as a function body without parameters. The return value type is void. It is parsed and executed a single time.

Precautions

  • Before using a procedural language, you must install it in the current database by running the CREATE LANGUAGE command. PL/pgSQL is installed by default. To install another language, you must specify it.
  • To use an untrusted language, you must have the USAGE permission on the programming language or the system administrator permission.

Syntax

1
DO [ LANGUAGE lang_name ] code;

Parameter Description

  • lang_name

    Specifies the name of the procedural language the code is written in. If omitted, the default is plpgsql.

  • code

    Specifies the programming language code that can be executed. The value must be a character string.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
-- Create the webuser user.
gaussdb=# CREATE USER webuser PASSWORD '********';

-- Grant all permissions on all views in the tpcds schema to the webuser user.
gaussdb=# DO $$DECLARE r record;
BEGIN
    FOR r IN SELECT c.relname,n.nspname FROM pg_class c,pg_namespace n 
             WHERE c.relnamespace = n.oid AND n.nspname = 'tpcds' AND relkind IN ('r','v')
    LOOP
        EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser';
    END LOOP;
END$$;


-- Delete the webuser user.
gaussdb=# DROP USER webuser CASCADE;