Contents IndexChapter 43.  Watcom-SQL Statements ALTER DBSPACE statement

User's Guide
   Part VI. SQL Anywhere Reference
     Chapter 43. Watcom-SQL Statements
      ALLOCATE DESCRIPTOR statement

Function

To allocate space for a SQL descriptor area (SQLDA).

Syntax

     ALLOCATE DESCRIPTOR descriptor-name
          ... [ WITH MAX{ integer | hostvar } ]

Usage

Embedded SQL.

Permissions

None.

Side effects

None.

See also

Description

Allocates space for a descriptor area (SQLDA). You must declare the following in your C code prior to using this statement:

     struct sqlda * descriptor_name

The WITH MAX clause allows you to specify the number of variables within the descriptor area. The default size is one.

You must still call fill_sqlda to allocate space for the actual data items before doing a fetch or any statement that accesses the data within a descriptor area.

Example

The following sample program includes an example of ALLOCATE DESCRIPTOR statement usage.

     #include <stdio.h>
     #include <stdlib.h>
     #include <string.h>
     
     EXEC SQL INCLUDE SQLCA;
     
     #include <sqldef.h>
     
     EXEC SQL BEGIN DECLARE SECTION;
     int            x;
     short            type;
     int            numcols;
     char            string[100];
     a_sql_statement_number stmt = 0;
     EXEC SQL END DECLARE SECTION;
     
     int main(int argc, char * argv[])
     {
         struct sqlda * sqlda1;
     
         if( !db_init( &sqlca ) ) {
             return 1;
         }
         db_string_connect( &sqlca, "UID=dba;PWD=sql;DBF=d:\\sqlany50\\sample.db");
     
         EXEC SQL ALLOCATE DESCRIPTOR sqlda1 WITH MAX 25;
     
         EXEC SQL PREPARE :stmt FROM 'select * from employee';
         EXEC SQL DECLARE curs CURSOR FOR :stmt;
         EXEC SQL OPEN curs;
     
         EXEC SQL DESCRIBE :stmt into sqlda1;
         EXEC SQL GET DESCRIPTOR sqlda1 :numcols=COUNT;
             // how many columns?
         if( numcols > 25 ) {
             // reallocate if necessary
             EXEC SQL DEALLOCATE DESCRIPTOR sqlda1;
             EXEC SQL ALLOCATE DESCRIPTOR sqlda1
                 WITH MAX :numcols;
         }
         type = DT_STRING; // change the type to string
         EXEC SQL SET DESCRIPTOR sqlda1 VALUE 2 TYPE = :type;
         fill_sqlda( sqlda1 ); // now we allocate space for the variables
     
         EXEC SQL FETCH ABSOLUTE 1 curs USING DESCRIPTOR sqlda1;
         EXEC SQL GET DESCRIPTOR sqlda1 VALUE 2 :string = DATA;
     
         printf("name = %s", string );
     
         EXEC SQL DEALLOCATE DESCRIPTOR sqlda1;
         EXEC SQL CLOSE curs;
         EXEC SQL DROP STATEMENT :stmt;
     
         db_string_disconnect( &sqlca, "" );
         db_fini( &sqlca );
     
         return 0;
     }

Contents IndexChapter 43.  Watcom-SQL Statements ALTER DBSPACE statement