From 6eb9c5a5657d1fe77b55cc261450f3538d35a94d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 4 May 2024 14:19:15 +0200 Subject: Adding upstream version 13.4. Signed-off-by: Daniel Baumann --- doc/src/sgml/html/sql-do.html | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 doc/src/sgml/html/sql-do.html (limited to 'doc/src/sgml/html/sql-do.html') diff --git a/doc/src/sgml/html/sql-do.html b/doc/src/sgml/html/sql-do.html new file mode 100644 index 0000000..2b90c63 --- /dev/null +++ b/doc/src/sgml/html/sql-do.html @@ -0,0 +1,49 @@ + +DO

DO

DO — execute an anonymous code block

Synopsis

+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 EXTENSION. + 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. +

+ If DO is executed in a transaction block, then the + procedure code cannot execute transaction control statements. Transaction + control statements are only allowed if DO is executed in + its own transaction. +

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. +

\ No newline at end of file -- cgit v1.2.3