
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
#include <stdio.h>
#include "/bld2ap/src/db/ecpg/MTR_NAME.h"
exec sql include sqlca;


int sql_select_between(int start,int end,struct mtr_name* mtr_name,int& total_rows)
{
   int ier;
   int i = 0;
   int count;

   exec sql begin declare section;
      struct data
      {	
              
         int           recno;
         char          mtrid[81];
         char          mtrname[21];
         char          full[301];
         int           spare;

      } temp;
      char command[5000];
      int start_index;
      int end_index;
   exec sql end declare section;

   start_index = start;
   end_index = end;
   sprintf (command,"select * from mtr_name where recno between ? and ? ;");
   exec sql prepare XX from :command;
   exec sql declare YY cursor for XX;
   exec sql open YY using :start_index,:end_index;
   while (1)
   {
      exec sql fetch in YY into :temp;
      if (sqlca.sqlerrd[2] == 0)
      {
         break;
      }
           
      mtr_name[i].recno = temp.recno;
      strcpy(mtr_name[i].mtrid,temp.mtrid);
      strcpy(mtr_name[i].mtrname,temp.mtrname);
      strcpy(mtr_name[i].full,temp.full);
      mtr_name[i].spare = temp.spare;

      i += 1;
   }
   total_rows = i;
   exec sql close YY;
   return(0);
}

int sql_update(int RECNO,char* field)
{
   int ier;
   int i;
   int PK_INDEX;

   exec sql begin declare section;
      struct data
      {	
              
         int           recno;
         char          mtrid[81];
         char          mtrname[21];
         char          full[301];
         int           spare;

      } temp;
      char command[5000];
   exec sql end declare section;
        
   temp.recno = recno;
   memcpy(temp.mtrid,mtrid,80);
   temp.mtrid[80] = '\0';
   memcpy(temp.mtrname,mtrname,20);
   temp.mtrname[20] = '\0';
   memcpy(temp.full,full,300);
   temp.full[300] = '\0';
   temp.spare = spare;


   PK_INDEX = RECNO;

        
   if (strncmp(field,"recno",strlen(field)) == 0) 
   { 
      sprintf (command,"update mtr_name set recno = %d where recno = %d;",temp.recno,PK_INDEX); 
   } 
   else if (strncmp(field,"mtrid",strlen(field)) == 0) 
   { 
      sprintf (command,"update mtr_name set mtrid = '%s' where recno = %d;",temp.mtrid,PK_INDEX); 
   } 
   else if (strncmp(field,"mtrname",strlen(field)) == 0) 
   { 
      sprintf (command,"update mtr_name set mtrname = '%s' where recno = %d;",temp.mtrname,PK_INDEX); 
   } 
   else if (strncmp(field,"full",strlen(field)) == 0) 
   { 
      sprintf (command,"update mtr_name set full = '%s' where recno = %d;",temp.full,PK_INDEX); 
   } 
   else if (strncmp(field,"spare",strlen(field)) == 0) 
   { 
      sprintf (command,"update mtr_name set spare = %d where recno = %d;",temp.spare,PK_INDEX); 
   } 
   exec sql execute immediate :command;
   exec sql commit;

   if (sqlca.sqlcode != 0)
   {
      printf ("sql_update_field--mtr_name : %s\n",sqlca.sqlerrm.sqlerrmc);
      return (-1);
   }
   return (0);
}



int sql_update(int RECNO)
{
   int ier;
   int i;
   int PK_INDEX;

   exec sql begin declare section;
      struct data
      {	
              
         int           recno;
         char          mtrid[81];
         char          mtrname[21];
         char          full[301];
         int           spare;

      } temp;
      char command[5000];
   exec sql end declare section;
        
   temp.recno = recno;
   memcpy(temp.mtrid,mtrid,80);
   temp.mtrid[80] = '\0';
   memcpy(temp.mtrname,mtrname,20);
   temp.mtrname[20] = '\0';
   memcpy(temp.full,full,300);
   temp.full[300] = '\0';
   temp.spare = spare;


   PK_INDEX = RECNO;

        
   sprintf(command,"update mtr_name  set mtrid = '%s',mtrname = '%s',full = '%s',spare = %d where recno = %d;",temp.mtrid,temp.mtrname,temp.full,temp.spare,PK_INDEX);
   exec sql execute immediate :command;

   exec sql commit;
   if (sqlca.sqlcode != 0)
   {
      printf ("sql_update--mtr_name : %s\n",sqlca.sqlerrm.sqlerrmc);
      return (-1);
   }
   return (0);
}



int sql_delete(int RECNO)
{
        
   int ier;
   exec sql begin declare section;
      int PK_INDEX;
   exec sql end declare section;
   PK_INDEX = RECNO;
   exec sql delete from mtr_name where recno = :PK_INDEX;
   exec sql commit;
   if (sqlca.sqlcode != 0)
   {
      printf ("sql_delete--mtr_name : %s\n",sqlca.sqlerrm.sqlerrmc);
      return (-1);
   }
   return (0);
}



