testd4.ec
上传用户:dgyhgb
上传日期:2007-01-07
资源大小:676k
文件大小:3k
源码类别:

SQL Server

开发平台:

Unix_Linux

  1. /*
  2.  * $Id$
  3.  *
  4.  * This file is a part of GNU SQL Server
  5.  *
  6.  * Copyright (c) 1996, Free Software Foundation, Inc
  7.  * Developed at Institute of System Programming of Russian Academy of Science
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify it under
  10.  * the terms of the GNU General Public License as published by the Free
  11.  * Software Foundation; either version 2 of the License, or (at your option)
  12.  * any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful, but WITHOUT
  15.  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  16.  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  17.  * more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License along with
  20.  * this program; if not, write to the Free Software Foundation, Inc.,
  21.  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  22.  *
  23.  * Contacts: gss@ispras.ru
  24.  */
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27. #include "tests.h"
  28. #include "dyn_funcs.h"
  29. extern char *err_str[];
  30. #define G(p)
  31. {
  32.   fprintf(stderr,"%s running...",#p);
  33.   int_res = p;
  34.   if(int_res<0)
  35.     goto errexit;
  36. }
  37. int
  38. main(void)
  39. {
  40.   char s[100],*op,*op1,*op2,*str1 =
  41.    "CREATE TABLE TTBL1(k int not null primary key, t0 char(10), k2 smallint not null unique, t1 char(20) default user, unique (t0,t1))" ,
  42.    *str2= "INSERT INTO TTBL1(k,t0,k2)"
  43.           "VALUES ( 10, 'aaa', 2) "
  44.     ,
  45.    *str3= "DROP TABLE TTBL1"
  46.   ;
  47.   int int_res, i_ind, s_ind;
  48.   {
  49.     SQL_DESCR descr1,descr2;
  50.     
  51.     __SQL_prepare(op, str1);
  52.     descr1=__SQL_allocate_descr("IN",0);
  53.     descr2=__SQL_allocate_descr("OUT",0);    
  54.     __SQL_describe(op, 1, descr1);    
  55.     __SQL_describe(op, 0, descr2);    
  56.     __SQL_execute(op, descr1, descr2);
  57.   }
  58.   
  59.   /* PREPARE op FROM  str1
  60.     EXECUTE op USING SQL DESCRIPTOR "IN"
  61.   ;*/
  62.   _SQL_commit();
  63.   
  64.   __SQL_prepare(op1,str2);
  65.   {
  66. SQL_DESCR tmp_in=__SQL_allocate_descr("IN" ,0);
  67. SQL_DESCR tmp_out=__SQL_allocate_descr("OUT" ,0);
  68. SQL_DESCR tmp;int flag=0, i=0;
  69. __SQL_describe(op1, 1, tmp_in);
  70. __SQL_describe(op1, 0, tmp_out);
  71. tmp=tmp_in;
  72. tmp_in=__SQL_get_descr("INP");
  73. __SQL_execute(op1, tmp_in, tmp_out);
  74. flag=1;
  75. tmp=tmp_out;
  76. }
  77.   _SQL_commit();
  78.   
  79.     __SQL_prepare(op2,str3);
  80. {
  81. SQL_DESCR tmp_in=__SQL_allocate_descr("IN" ,0);
  82. SQL_DESCR tmp_out=__SQL_allocate_descr("OUT" ,0);
  83. SQL_DESCR tmp;int flag=0, i=0;
  84. __SQL_describe(op2, 1, tmp_in);
  85. __SQL_describe(op2, 0, tmp_out);
  86. tmp=tmp_in;
  87. tmp_in=__SQL_get_descr("INPUT");
  88. __SQL_execute(op2, tmp_in, tmp_out);
  89. flag=1;
  90. tmp=tmp_out;
  91. }
  92.   _SQL_commit();
  93.   return 0;
  94. errexit:
  95.   if (int_res < 0)
  96.     printf ("SQL_ERROR: '%s'n", err_str[-int_res]);
  97.   else
  98.     {
  99.       int_res = __SQL_execute_immediate ("COMMIT WORK");
  100.       if (int_res < 0)
  101.         printf ("SQL_ERROR: '%s'n", err_str[-int_res]);
  102.     }
  103.   return 0;
  104. }