LCOV - code coverage report
Current view: top level - src/interfaces/ecpg/test/sql - execute.pgc (source / functions) Coverage Total Hit
Test: Code coverage Lines: 0.0 % 79 0
Test Date: 2026-01-26 10:56:24 Functions: 0.0 % 1 0
Legend: Lines:     hit not hit

            Line data    Source code
       1              : #include <stdlib.h>
       2              : #include <string.h>
       3              : #include <stdlib.h>
       4              : #include <stdio.h>
       5              : 
       6              : exec sql include ../regression;
       7              : 
       8              : exec sql whenever sqlerror sqlprint;
       9              : 
      10              : int
      11            0 : main(void)
      12              : {
      13              : exec sql begin declare section;
      14            0 :         int amount[8];
      15            0 :         int increment=100;
      16            0 :         char name[8][8];
      17            0 :         char letter[8][1];
      18            0 :         char command[128];
      19              : exec sql end declare section;
      20            0 :         int i,j;
      21              : 
      22            0 :         ECPGdebug(1, stderr);
      23              : 
      24            0 :         exec sql connect to REGRESSDB1 as main;
      25            0 :         exec sql create table test (name char(8), amount int, letter char(1));
      26            0 :         exec sql commit;
      27            0 : 
      28              :         /* test handling of embedded quotes in EXECUTE IMMEDIATE "literal" */
      29            0 :         exec sql execute immediate "insert into test (name, \042amount\042, letter) values ('db: ''r1''', 1, 'f')";
      30            0 : 
      31            0 :         sprintf(command, "insert into test (name, amount, letter) values ('db: ''r1''', 2, 't')");
      32            0 :         exec sql execute immediate :command;
      33            0 : 
      34            0 :         sprintf(command, "insert into test (name, amount, letter) select name, amount+10, letter from test");
      35            0 :         exec sql execute immediate :command;
      36            0 : 
      37            0 :         printf("Inserted %ld tuples via execute immediate\n", sqlca.sqlerrd[2]);
      38              : 
      39            0 :         sprintf(command, "insert into test (name, amount, letter) select name, amount+$1, letter from test");
      40            0 :         exec sql prepare I from :command;
      41            0 :         exec sql execute I using :increment;
      42            0 : 
      43            0 :         printf("Inserted %ld tuples via prepared execute\n", sqlca.sqlerrd[2]);
      44              : 
      45            0 :         exec sql commit;
      46            0 : 
      47            0 :         sprintf (command, "select * from test");
      48              : 
      49            0 :         exec sql prepare f from :command;
      50            0 :         exec sql declare CUR cursor for f;
      51              : 
      52            0 :         exec sql open CUR;
      53            0 :         exec sql fetch 8 in CUR into :name, :amount, :letter;
      54            0 : 
      55            0 :         for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
      56            0 :         {
      57              :                 exec sql begin declare section;
      58            0 :                 char n[8], l = letter[i][0];
      59            0 :                 int a = amount[i];
      60              :                 exec sql end declare section;
      61              : 
      62            0 :                 strncpy(n, name[i], 8);
      63            0 :                 printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, n, i, a, i, l);
      64            0 :         }
      65              : 
      66            0 :         exec sql close CUR;
      67            0 :         exec sql deallocate f;
      68            0 : 
      69            0 :         sprintf (command, "select * from test where amount = $1");
      70              : 
      71            0 :         exec sql prepare f from :command;
      72            0 :         exec sql declare CUR2 cursor for f;
      73              : 
      74            0 :         exec sql open CUR2 using 1;
      75            0 :         exec sql fetch in CUR2 into :name, :amount, :letter;
      76            0 : 
      77            0 :         for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
      78            0 :         {
      79              :                 exec sql begin declare section;
      80            0 :                 char n[8], l = letter[i][0];
      81            0 :                 int a = amount[i];
      82              :                 exec sql end declare section;
      83              : 
      84            0 :                 strncpy(n, name[i], 8);
      85            0 :                 printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, n, i, a, i, l);
      86            0 :         }
      87              : 
      88            0 :         exec sql close CUR2;
      89            0 :         exec sql deallocate f;
      90            0 : 
      91            0 :         sprintf (command, "select * from test where amount = $1");
      92              : 
      93            0 :         exec sql prepare f from :command;
      94            0 :         exec sql execute f using 2 into :name, :amount, :letter;
      95            0 : 
      96            0 :         for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
      97            0 :         {
      98              :                 exec sql begin declare section;
      99            0 :                 char n[8], l = letter[i][0];
     100            0 :                 int a = amount[i];
     101            0 :                 exec sql end declare section;
     102              : 
     103            0 :                 strncpy(n, name[i], 8);
     104            0 :                 printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, n, i, a, i, l);
     105            0 :         }
     106              : 
     107            0 :         exec sql deallocate f;
     108            0 :         exec sql drop table test;
     109            0 :         exec sql commit;
     110            0 :         exec sql disconnect;
     111            0 : 
     112            0 :         return 0;
     113            0 : }
        

Generated by: LCOV version 2.3.2-1