ok
Direktori : /opt/alt/postgresql11/usr/share/doc/alt-postgresql11-9.2.24/html/ |
Current File : //opt/alt/postgresql11/usr/share/doc/alt-postgresql11-9.2.24/html/sql-do.html |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >DO</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REV="MADE" HREF="mailto:pgsql-docs@postgresql.org"><LINK REL="HOME" TITLE="PostgreSQL 9.2.24 Documentation" HREF="index.html"><LINK REL="UP" TITLE="SQL Commands" HREF="sql-commands.html"><LINK REL="PREVIOUS" TITLE="DISCARD" HREF="sql-discard.html"><LINK REL="NEXT" TITLE="DROP AGGREGATE" HREF="sql-dropaggregate.html"><LINK REL="STYLESHEET" TYPE="text/css" HREF="stylesheet.css"><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"><META NAME="creation" CONTENT="2017-11-06T22:43:11"></HEAD ><BODY CLASS="REFENTRY" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="5" ALIGN="center" VALIGN="bottom" ><A HREF="index.html" >PostgreSQL 9.2.24 Documentation</A ></TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A TITLE="DISCARD" HREF="sql-discard.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="sql-commands.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="60%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="20%" ALIGN="right" VALIGN="top" ><A TITLE="DROP AGGREGATE" HREF="sql-dropaggregate.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="SQL-DO" ></A >DO</H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN73214" ></A ><H2 >Name</H2 >DO -- execute an anonymous code block</DIV ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN73221" ></A ><H2 >Synopsis</H2 ><PRE CLASS="SYNOPSIS" >DO [ LANGUAGE <TT CLASS="REPLACEABLE" ><I >lang_name</I ></TT > ] <TT CLASS="REPLACEABLE" ><I >code</I ></TT ></PRE ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN73225" ></A ><H2 >Description</H2 ><P > <TT CLASS="COMMAND" >DO</TT > executes an anonymous code block, or in other words a transient anonymous function in a procedural language. </P ><P > The code block is treated as though it were the body of a function with no parameters, returning <TT CLASS="TYPE" >void</TT >. It is parsed and executed a single time. </P ><P > The optional <TT CLASS="LITERAL" >LANGUAGE</TT > clause can be written either before or after the code block. </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN73233" ></A ><H2 >Parameters</H2 ><P ></P ><DIV CLASS="VARIABLELIST" ><DL ><DT ><TT CLASS="REPLACEABLE" ><I >code</I ></TT ></DT ><DD ><P > The procedural language code to be executed. This must be specified as a string literal, just as in <TT CLASS="COMMAND" >CREATE FUNCTION</TT >. Use of a dollar-quoted literal is recommended. </P ></DD ><DT ><TT CLASS="REPLACEABLE" ><I >lang_name</I ></TT ></DT ><DD ><P > The name of the procedural language the code is written in. If omitted, the default is <TT CLASS="LITERAL" >plpgsql</TT >. </P ></DD ></DL ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN73248" ></A ><H2 >Notes</H2 ><P > The procedural language to be used must already have been installed into the current database by means of <TT CLASS="COMMAND" >CREATE LANGUAGE</TT >. <TT CLASS="LITERAL" >plpgsql</TT > is installed by default, but other languages are not. </P ><P > The user must have <TT CLASS="LITERAL" >USAGE</TT > 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. </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="SQL-DO-EXAMPLES" ></A ><H2 >Examples</H2 ><P > Grant all privileges on all views in schema <TT CLASS="LITERAL" >public</TT > to role <TT CLASS="LITERAL" >webuser</TT >: </P><PRE CLASS="PROGRAMLISTING" >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$$;</PRE ><P></P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN73261" ></A ><H2 >Compatibility</H2 ><P > There is no <TT CLASS="COMMAND" >DO</TT > statement in the SQL standard. </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN73265" ></A ><H2 >See Also</H2 ><A HREF="sql-createlanguage.html" >CREATE LANGUAGE</A ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="sql-discard.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="sql-dropaggregate.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >DISCARD</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="sql-commands.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >DROP AGGREGATE</TD ></TR ></TABLE ></DIV ></BODY ></HTML >