test16.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. int
  29. main(void)
  30. {
  31.   char tabname[100],owner[100],credate[100],cretime[100];
  32.   char tabtype[5];
  33.   int untabid,tabd,primindid,nrows, nrows_ind, primindid_ind, nnulcolnum;
  34.   short segid,ncols;
  35.   int i = 8;
  36.   EXEC SQL
  37.   DECLARE CURS1 CURSOR FOR
  38.     (SELECT TABNAME, OWNER, UNTABID
  39.            ,SEGID,PRIMINDID,
  40.            TABTYPE,TABD,CREDATE,CRETIME,NCOLS,NROWS, NNULCOLNUM
  41.      FROM DEFINITION_SCHEMA.SYSTABLES
  42. --     WHERE
  43. --     (UNTABID + 3 > 7 - SEGID AND OWNER < 'SZ')
  44. --     OR
  45. --     (NROWS + 3 > 5 - SEGID AND TABNAME < 'SZ')
  46. --      UNTABID IS NOT NULL --PRIMINDID IS NULL
  47. --
  48. --      TABTYPE + '1' = '0' /* We can't do arithmetic operations with strings !!!!! */
  49. --      AND
  50. --        2<=5 + NCOLS
  51. --     AND
  52. --    2<=5 - NCOLS
  53. --     AND  
  54. --    2<= - NCOLS
  55. --
  56. --  AND
  57. --      TABNAME = 'ZTBL1' --'ZTBL0' -->='SYSV'
  58. --    AND
  59. --      TABNAME >= 'SYSCHZ' --'SYST' -->='SYSV'
  60. --      OWNER > 'SYS' --'dkv'
  61. --    AND
  62. --      OWNER = 'dkv'
  63. --
  64. --    AND
  65. --      NCOLS >=3
  66. --   AND
  67. --     NCOLS + 2 + 2<=5
  68. --    AND
  69. --     NCOLS <> 4
  70. --    AND
  71. --      NCOLS IS NULL
  72. --    AND
  73. --     UNTABID > 3 + NCOLS
  74. -- AND
  75. --      NCOLS BETWEEN 3 AND 5
  76. --     NOT
  77. --       UNTABID BETWEEN 7 AND 10
  78. --      UNTABID > 3
  79.       )
  80. --    ORDER BY TABNAME
  81. ;
  82.   $ WHENEVER SQLERROR GOTO errexit;
  83.   $ WHENEVER NOT FOUND GOTO exit;
  84.   $ open CURS1;
  85.   while(1)
  86.     {
  87.       $ fetch CURS1 into :tabname, :owner, :untabid , :segid,
  88.                          :primindid :primindid_ind, :tabtype, :tabd,
  89.                          :credate, :cretime, :ncols,
  90.                          :nrows :nrows_ind, :nnulcolnum;
  91.       PRINT_S (tabname, "tabname");
  92.       PRINT_S (owner, "owner");
  93.       PRINT_D (untabid, "untabid");
  94.       PRINT_D (segid, "segid");
  95.       PRINT_ID (primindid, "primindid");
  96.       PRINT_D (tabd, "tabd");
  97.       PRINT_S (tabtype, "tabtype");
  98.       PRINT_S (credate, "credate");
  99.       PRINT_S (cretime, "cretime");
  100.       PRINT_D (ncols, "ncols");
  101.       PRINT_ID (nrows, "nrows");
  102.       PRINT_D (nnulcolnum, "nnulcolnum");
  103.       PRINT_END;
  104.     }
  105.  exit:
  106.   fprintf(stderr,"End of Table SYSTABLESn");
  107.   $ close CURS1;
  108.   /*  $ commit work; */
  109.   return 0;
  110. errexit:
  111.   return 0;
  112. }