aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2006-05-30 11:58:05 +0000
committerBruce Momjian <bruce@momjian.us>2006-05-30 11:58:05 +0000
commit88ba64d3963e2dff92426103ab7891a32032900e (patch)
tree6122f03eeabf6c1f71eb92b760991a75b9d89ffc /doc/src
parentb6477c6295226ae7d7f43185ce0ab55f47bd5f94 (diff)
downloadpostgresql-88ba64d3963e2dff92426103ab7891a32032900e.tar.gz
postgresql-88ba64d3963e2dff92426103ab7891a32032900e.zip
Back out patch, wrong previous commit message.
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/plpgsql.sgml51
1 files changed, 1 insertions, 50 deletions
diff --git a/doc/src/sgml/plpgsql.sgml b/doc/src/sgml/plpgsql.sgml
index ef5e9e3ece0..aa673450093 100644
--- a/doc/src/sgml/plpgsql.sgml
+++ b/doc/src/sgml/plpgsql.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.91 2006/05/30 11:54:51 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.92 2006/05/30 11:58:05 momjian Exp $ -->
<chapter id="plpgsql">
<title><application>PL/pgSQL</application> - <acronym>SQL</acronym> Procedural Language</title>
@@ -880,55 +880,6 @@ SELECT merge_fields(t.*) FROM table1 t WHERE ... ;
</para>
<para>
- To obtain the values of the fields the record is made up of,
- the record variable can be qualified with the column or field
- name. This can be done either by literally using the column name
- or the column name for indexing the record can be taken out of a scalar
- variable. The syntax for this notation is Record_variable.(IndexVariable).
- To get information about the column field names of the record,
- a special expression exists that returns all column names as an array:
- RecordVariable.(*) .
- Thus, the RECORD can be viewed
- as an associative array that allows for introspection of it's contents.
- This feature is especially useful for writing generic triggers that
- operate on records with unknown structure.
- Here is an example procedure that shows column names and values
- of the predefined record NEW in a trigger procedure:
-<programlisting>
-
-CREATE OR REPLACE FUNCTION show_associative_records() RETURNS TRIGGER AS $$
- DECLARE
- colname TEXT;
- colcontent TEXT;
- colnames TEXT[];
- coln INT4;
- coli INT4;
- BEGIN
--- obtain an array with all field names of the record
- colnames := NEW.(*);
- RAISE NOTICE 'All column names of test record: %', colnames;
--- show field names and contents of record
- coli := 1;
- coln := array_upper(colnames,1);
- RAISE NOTICE 'Number of columns in NEW: %', coln;
- FOR coli IN 1 .. coln LOOP
- colname := colnames[coli];
- colcontent := NEW.(colname);
- RAISE NOTICE 'column % of NEW: %', quote_ident(colname), quote_literal(colcontent);
- END LOOP;
--- Do it with a fixed field name:
--- will have to know the column name
- RAISE NOTICE 'column someint of NEW: %', quote_literal(NEW.someint);
- RETURN NULL;
- END;
-$$ LANGUAGE plpgsql;
---CREATE TABLE test_records (someint INT8, somestring TEXT);
---CREATE TRIGGER tr_test_record BEFORE INSERT ON test_records FOR EACH ROW EXECUTE PROCEDURE show_associative_records();
-
-</programlisting>
- </para>
-
- <para>
Note that <literal>RECORD</> is not a true data type, only a placeholder.
One should also realize that when a <application>PL/pgSQL</application>
function is declared to return type <type>record</>, this is not quite the