]> granicus.if.org Git - postgresql/blob - src/interfaces/ecpg/test/sql/func.pgc
19c4ba7cc646e38d435a757ff211bb693f759c1b
[postgresql] / src / interfaces / ecpg / test / sql / func.pgc
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 EXEC SQL INCLUDE ../regression;
6
7 int main(int argc, char* argv[]) {
8   EXEC SQL char text[25];
9
10   ECPGdebug(1, stderr);
11   EXEC SQL CONNECT TO REGRESSDB1;
12
13   EXEC SQL SET AUTOCOMMIT TO ON;
14   EXEC SQL WHENEVER SQLWARNING SQLPRINT;
15   EXEC SQL WHENEVER SQLERROR SQLPRINT;
16
17   EXEC SQL CREATE TABLE My_Table ( Item1 int, Item2 text );
18   EXEC SQL CREATE TABLE Log (name text, w text);
19
20   EXEC SQL CREATE FUNCTION My_Table_Check() RETURNS trigger
21     AS $test$
22     BEGIN
23         INSERT INTO Log VALUES(TG_NAME, TG_WHEN);
24         RETURN NEW;
25     END; $test$
26     LANGUAGE plpgsql;
27
28   EXEC SQL CREATE TRIGGER My_Table_Check_Trigger
29     BEFORE INSERT
30     ON My_Table
31     FOR EACH ROW
32     EXECUTE PROCEDURE My_Table_Check();
33
34   EXEC SQL INSERT INTO My_Table VALUES (1234, 'Some random text');
35   EXEC SQL INSERT INTO My_Table VALUES (5678, 'The Quick Brown');
36   EXEC SQL SELECT name INTO :text FROM Log LIMIT 1;
37   printf("Trigger %s fired.\n", text);
38
39   EXEC SQL DROP TRIGGER My_Table_Check_Trigger ON My_Table;
40   EXEC SQL DROP FUNCTION My_Table_Check();
41   EXEC SQL DROP TABLE Log;
42   EXEC SQL DROP TABLE My_Table;
43
44   EXEC SQL DISCONNECT ALL;
45
46   return 0;
47 }