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

SQL Server

开发平台:

Unix_Linux

  1. /* 
  2.  *  dyn_funcs.h  - setup global directives to current operating system 
  3.  *                 and program environment 
  4.  * 
  5.  *  This file is a part of GNU SQL Server
  6.  *
  7.  *  Copyright (c) 1996, 1997, Free Software Foundation, Inc
  8.  *  Developed at the Institute of System Programming
  9.  *  This file is written by Konstantin Dyshlevoj, 1995
  10.  *  
  11.  *  This program is free software; you can redistribute it and/or modify
  12.  *  it under the terms of the GNU General Public License as published by
  13.  *  the Free Software Foundation; either version 2 of the License, or
  14.  *  (at your option) any later version.
  15.  *  
  16.  *  This program is distributed in the hope that it will be useful,
  17.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  *  GNU General Public License for more details.
  20.  *  
  21.  *  You should have received a copy of the GNU General Public License
  22.  *  along with this program; if not, write to the Free Software
  23.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  24.  *
  25.  *  Contacts: gss@ispras.ru
  26.  *
  27.  */
  28. #ifndef _DYN_FUNCS_H_
  29. #define _DYN_FUNCS_H_
  30. /* $Id: dyn_funcs.h,v 1.247 1997/04/21 14:29:41 kml Exp $ */
  31. #include <gnusql/setup_os.h>
  32. #define DEF_SQLTYPE(CODE,SQLTN,CTN,DYN_ID)  SQL__##CODE = DYN_ID,
  33. typedef enum {
  34. #include "sql_type.def"
  35.   SQL__LAST
  36. } dyn_sql_type_code_t;
  37. typedef struct
  38. {
  39.   int   type; /* type code from SQL standard                 *
  40.                * in user's  descriptor or SQL-server's type  *
  41.                * code in internal  descriptors               */
  42.   int   length;
  43.   int   returned_length;
  44.   int   nullable;
  45.   int   indicator;
  46.   int   unnamed;
  47.   char *name;
  48.   void *data;
  49.   int   data_allocated_size; /* not for user */
  50. } sql_descr_element_t;
  51. typedef struct
  52. {
  53.   int                    count;
  54.   int                    maximum;
  55.   int                    alloc_cnt; /* not for user */
  56.   sql_descr_element_t   *values; 
  57. } sql_descr_t;
  58.   
  59. typedef sql_descr_t *SQL_DESCR;
  60. /****************************** not for user ****************************/
  61. struct s_stmt {
  62.   char *name;
  63.   int   sectnum;
  64.   int   segm;       /* virtual address of made segment for dynamic *
  65.                      * nonselect operators. May be = 0 only for    *
  66.                      * DELETE positioned & cursor specification    */
  67.   int   mem_ptr;    /* for SELECT statement : phisical address in  *
  68.                      * server of segment placed to piece of memory */
  69.   int   mem_size;
  70.   char *table_name; /* this & next fields identify the table   *
  71.                      * if prepared statement - updatable query */
  72.   char *table_owner;
  73.   
  74.   sql_descr_t in_descr;
  75.   sql_descr_t out_descr;
  76.   struct s_cursor *dep_on_cursor; /* points to correspondent cursor if this  *
  77.                                    * statement - UPDATE or DELETE positioned */
  78.   struct s_stmt *next;
  79. };
  80. /***********************************************************************/
  81. SQL_DESCR SQL__allocate_descr    __P((char *descr_name, int maximum));
  82. void      SQL__deallocate_descr  __P((SQL_DESCR *descr_ptr));
  83. SQL_DESCR SQL__get_descr         __P((char *descr_name));
  84. /* all following functions return error code = SQLCODE */
  85. int       SQL__prepare  __P((char *stmt_name, char *stmt_text));
  86. int       SQL__deallocate_prepare  __P((char *stmt_name));
  87. /* In all following fuctions working with descriptors:              *
  88.  * 'using_input' must be correctly filled accordingly description   *
  89.  * of 'stmt_name' input.                                            *
  90.  * Some fields of 'using_output' can be not filled. In this case    *
  91.  * the function will make correspondent result value description.   *
  92.  * In all cases function makes for output-descriptor memory         *
  93.  * allocation for DATA. So we recommend for users of this functions *
  94.  * don't use the same descriptor for input & output description.    */
  95. int       SQL__describe  __P((char *stmt_name, int is_input, SQL_DESCR descr));
  96. /* all values NAME & DATA in descriptor elements are being allocated *
  97.  * here. So user can only read this values & can't use them after    *
  98.  * reprepareing of statement 'stmt_name'                             */
  99. int       SQL__execute  __P((char *stmt_name,SQL_DESCR using_input, SQL_DESCR using_output));
  100. int       SQL__execute_immediate  __P((char *stmt_text));
  101. int       SQL__declare_cursor  __P((char *stmt_name, char *cursor_name));
  102. /* function only associates cursor & statement names: *
  103.  * pointed statement can be not prepared yet          */
  104. int       SQL__allocate_cursor  __P((char *stmt_name, char *cursor_name));
  105. /* associates cursor name with prepared statement */
  106. int       SQL__open_cursor  __P((char *cursor_name, SQL_DESCR using_input));
  107. int       SQL__fetch  __P((char *cursor_name, SQL_DESCR using_output));
  108. int       SQL__close_cursor  __P((char *cursor_name));
  109. int       SQL__delete  __P((char *cursor_name, char *table_name, char *table_owner));
  110. int       SQL__update  __P((char *cursor_name, char *table_name, char *table_owner, char *set_clause));
  111. /* set_clause = "SET ..." */
  112. #endif