test3c.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 "typepi.h"
  29. int
  30. main(void)
  31. {
  32.   int i = 5;
  33.   char str[] = "SZ" /* "TABD" "UNTABID" */;
  34.   char COLNAME[20], COLTYPE[2], DEFVAL[500],
  35.     DEFNULL[2], MAXVAL[500], MINVAL[500];
  36.   int  UNTABID, COLTYPE1, COLTYPE2, VALNO;
  37.   short COLNO;
  38.   int  DEFVAL_ind, VALNO_ind, MAXVAL_ind, MINVAL_ind;
  39.   
  40.   EXEC SQL
  41.     DECLARE CURS1 CURSOR FOR
  42.     (SELECT COLNAME, UNTABID, COLNO, COLTYPE, COLTYPE1,
  43.      COLTYPE2, DEFVAL, DEFNULL, VALNO, MINVAL, MAXVAL
  44.      FROM DEFINITION_SCHEMA.SYSCOLUMNS
  45. --     WHERE UNTABID = 2
  46. --     WHERE UNTABID > 10
  47. --     AND COLNAME = 'k1'
  48. --   WHERE COLNAME >= :str AND UNTABID < :i --OR UNTABID > 100
  49.     )
  50.     ;
  51.   
  52.   $ WHENEVER SQLERROR GOTO errexit;
  53.   $ WHENEVER NOT FOUND GOTO exit;
  54.   $ open CURS1;
  55.   while(1)
  56.     {
  57.       $ fetch CURS1 into :COLNAME, :UNTABID, :COLNO, :COLTYPE, :COLTYPE1,
  58. :COLTYPE2, :DEFVAL :DEFVAL_ind, :DEFNULL,
  59. :VALNO :VALNO_ind, :MINVAL :MINVAL_ind, :MAXVAL :MAXVAL_ind;
  60.       
  61.       PRINT_S (COLNAME, "colname");
  62.       PRINT_D (UNTABID, "untabid");
  63.       PRINT_D (COLNO, "colno");
  64.       PRINT_D (*COLTYPE, "coltype");
  65.       PRINT_D (COLTYPE1, "coltype1");
  66.       PRINT_D (COLTYPE2, "coltype2");
  67.       PRINT_IS (DEFVAL, "defval");
  68.       PRINT_S (DEFNULL, "defnull");
  69.       PRINT_ID (VALNO, "valno");
  70.       switch (*COLTYPE)
  71. {
  72. case T_STR :
  73.   PRINT_IS (MINVAL, "minval");
  74.   PRINT_IS (MAXVAL, "maxval");
  75.   break;
  76.   
  77. case T_SRT :
  78.   PRINT_IDI ((*(short*)MINVAL), MINVAL_ind, "minval");
  79.   PRINT_IDI ((*(short*)MAXVAL), MAXVAL_ind, "maxval");
  80.   break;
  81.   
  82. case T_INT :
  83.   PRINT_IDI ((*(int*)MINVAL), MINVAL_ind, "minval");
  84.   PRINT_IDI ((*(int*)MAXVAL), MAXVAL_ind, "maxval");
  85.   break;
  86.   
  87. case T_LNG :
  88.   PRINT_IDI ((*(long*)MINVAL), MINVAL_ind, "minval");
  89.   PRINT_IDI ((*(long*)MAXVAL), MAXVAL_ind, "maxval");
  90.   break;
  91.   
  92. case T_FLT :
  93.   PRINT_IDI ((*(float*)MINVAL), MINVAL_ind, "minval");
  94.   PRINT_IDI ((*(float*)MAXVAL), MAXVAL_ind, "maxval");
  95.   break;
  96. }
  97.       
  98.       PRINT_END;
  99.     }
  100. exit:
  101.   fprintf(stderr,"End of Table SYSCOLUMNSn");
  102.   $ close CURS1;
  103.   $ commit work;
  104.   return 0;
  105. errexit:
  106.   return 0;
  107. }