Document SQL functions' behavior of parsing the whole function at once.
authorTom Lane
Thu, 19 Jun 2014 16:33:56 +0000 (12:33 -0400)
committerTom Lane
Thu, 19 Jun 2014 16:33:56 +0000 (12:33 -0400)
Haribabu Kommi, somewhat rewritten by me

doc/src/sgml/xfunc.sgml

index 941b101f393fdd0a127303dc05f016f2faf5467d..d759f3746b2a57dfd5f6f0ae9ad5dd6a3155362f 100644 (file)
@@ -143,6 +143,21 @@ SELECT clean_emp();
 
     
 
+    
+     
+      The entire body of a SQL function is parsed before any of it is
+      executed.  While a SQL function can contain commands that alter
+      the system catalogs (e.g., CREATE TABLE), the effects
+      of such commands will not be visible during parse analysis of
+      later commands in the function.  Thus, for example,
+      CREATE TABLE foo (...); INSERT INTO foo VALUES(...);
+      will not work as desired if packaged up into a single SQL function,
+      since foo won't exist yet when the INSERT
+      command is parsed.  It's recommended to use PL/PgSQL
+      instead of a SQL function in this type of situation.
+     
+   
+
    
     The syntax of the CREATE FUNCTION command requires
     the function body to be written as a string constant.  It is usually