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

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. int
  29. main(void)
  30. {
  31.   char tabname[100],owner[100],inxname[100],colname[100];
  32.   char tabtype[5];
  33.   int untabid,tabd,primindid,nrows;
  34.   short segid,ncols;
  35.   EXEC SQL
  36.     DECLARE CURS2 CURSOR FOR
  37.     (
  38.       SELECT TABNAME, t.UNTABID, INXNAME, COLNAME
  39.       --,COLNAME,t.UNTABID --OWNER,UNTABID
  40.       FROM DEFINITION_SCHEMA.SYSCOLUMNS c, DEFINITION_SCHEMA.SYSINDEXES i,
  41.            DEFINITION_SCHEMA.SYSTABLES  t
  42.       WHERE
  43.       t.UNTABID = c.UNTABID
  44.       AND
  45.       t.UNTABID = i.UNTABID
  46.       AND
  47.       i.COLNO1 IN (SELECT COLNO
  48.                    FROM DEFINITION_SCHEMA.SYSCOLUMNS cb,
  49.                         DEFINITION_SCHEMA.SYSTABLES tb
  50.                    WHERE
  51.                         DEFINITION_SCHEMA.SYSTABLES.UNTABID = t.UNTABID
  52.                     AND t.UNTABID > 2
  53.                     AND cb.UNTABID = tb.UNTABID
  54.                     AND COLNAME = c.COLNAME
  55.                    )
  56.       AND
  57.       t.UNTABID = ANY ( 
  58.                        SELECT UNTABID
  59.                        FROM DEFINITION_SCHEMA.SYSCOLUMNS
  60.                        --          WHERE UNTABID < 5
  61.                        WHERE COLNAME = 'NCOLS'
  62.                        --'COLNOTO1' --'UNTABID' --'COLNOTO1' --'ABCD'
  63.                        )
  64.     )
  65.     ;
  66.   EXEC SQL
  67.     DECLARE CURS1 CURSOR FOR
  68.     (
  69.       SELECT TABNAME, TA.UNTABID, INXNAME, COLNAME
  70.       --,COLNAME,TA.UNTABID --OWNER,UNTABID
  71.       FROM
  72.           DEFINITION_SCHEMA.SYSCOLUMNS A,
  73.           DEFINITION_SCHEMA.SYSINDEXES i,
  74.           DEFINITION_SCHEMA.SYSTABLES TA
  75.       WHERE
  76.           TA.UNTABID = A.UNTABID
  77.         AND
  78.           TA.UNTABID = i.UNTABID
  79.         AND
  80.           i.COLNO1 IN
  81.            (SELECT COLNO
  82.             FROM DEFINITION_SCHEMA.SYSCOLUMNS B, DEFINITION_SCHEMA.SYSTABLES TB
  83.             WHERE
  84.                   TB.UNTABID = TA.UNTABID
  85.               AND TA.UNTABID > 2
  86.               AND B.UNTABID = TB.UNTABID
  87.               AND COLNAME = A.COLNAME
  88.            )
  89.         AND
  90.           TA.UNTABID = ANY
  91.            (SELECT UNTABID
  92.             FROM DEFINITION_SCHEMA.SYSCOLUMNS
  93.             WHERE
  94.               -- UNTABID < 5
  95.               COLNAME = 'NCOLS' --'COLNOTO1' --'UNTABID' --'COLNOTO1' --'ABCD'
  96.            )
  97.     )
  98.   ;
  99.   $ WHENEVER SQLERROR GOTO errexit;
  100.   $ WHENEVER NOT FOUND GOTO exit;
  101.   $ open CURS2;
  102.   while(1)
  103.     {
  104.       $ fetch CURS2 into :tabname,:untabid, :inxname, :colname;
  105.       PRINT_S (tabname, "tabname");
  106.       PRINT_D (untabid, "untabid");
  107.       PRINT_S (inxname, "inxname");
  108.       PRINT_S (colname, "colname");
  109.       PRINT_END;
  110.     }
  111. exit:
  112.   fprintf(stderr,"End of Table n");
  113.   $ close CURS2;
  114.   $ commit work;
  115.   return 0;
  116. errexit:
  117.   fprintf(stderr,"Test %s: error (%d) : %sn",
  118.           __FILE__,gsqlca.sqlcode,gsqlca.errmsg);
  119.   return 1;
  120. }