Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: How to make the spaces be gone?

Re: How to make the spaces be gone?

From: <haaseg_at_my-deja.com>
Date: Mon, 18 Oct 1999 14:13:35 GMT
Message-ID: <7uf9u5$ib7$1@nnrp1.deja.com>


By default pro*C expands char[n] fields with blanks and terminates it with a '\0' when fetching values.

Just right trim the values after fetching e.g. with:

/***********************************************************************
****
*** dbTrim
************************************************************************
***/
void
dbTrim(char* cpString)
{

   char* cpPos = cpString;

   if (cpString==NULL)

      return;

   /* delete leading spaces */
   if (isspace(*cpPos))
{

      do
         ++cpPos;
      while (isspace(*cpPos));
      strcpy(cpString,cpPos);

   }

   /* delete trailing spaces */
   cpPos = cpString + strlen(cpString);    if (cpPos>cpString && isspace(cpPos[-1]))
{

      do
         --cpPos;
      while (cpPos>cpString && isspace(cpPos[-1]));
      *cpPos = '\0';

   }
}

In article <7ucini$sd9$1_at_nnrp1.deja.com>,   Alex Vinokur <alexander.vinokur_at_telrad.co.il> wrote:

> Hi,
>
> Using Pro*C++ I select all records
>         of specific table from Database.
>
> However I can't get *pure* (without spaces) value
>         of VARCHAR2-column.
>
> For instance (see below):
> 1) value of column FFF4 in table FFF is
>    ZZZ_1_4      // Record#1
>    [missing]    // Record#2
>    ZZZ_3_4      // Record#3
>
> 2) My host variable col_value4 are char [15].
>
> 3) Value of col_value4 is
>     col [4] : value = <ZZZ_1_4       >,  indicator = <0>  // Record#1
>     col [4] : value = <              >,  indicator = <-1> // Record#2
>     col [4] : value = <ZZZ_3_4       >,  indicator = <0>  // Record#3
>    Note. The values contain spaces.
>
> 4) I would like to get output as following (using Pro*/C++ features):
>     col [4] : value = <ZZZ_1_4>,  indicator = <0>  // Record#1
>     col [4] : value = --- Never mind ---,  indicator = <-1> //
Record#2
>     col [4] : value = <ZZZ_3_4>,  indicator = <0>  // Record#3
>
>         Thanks in advance,
>         Alex
>
> //#########################################################
> //------------------- Pro*C++ code : BEGIN ----------------
>
> // File ttt2.pc
>
> #include <stdio.h>
> #include <strings.h>
> #include <assert.h>
> #include <iostream.h>
>
> #include <sqlca.h>
> #include <oraca.h>
>
> //=========================================
> #define PRINT_VALUE(col_no, col_value, col_indicator) \
>                 cout << "" \
>                      << "  \t" \
>                      << "col [" \
>                      << col_no \
>                      << "] : " \
>                      << "value = <" \
>                      << col_value \
>                      << ">" \
>                      << ",  " \
>                      << "indicator = <" \
>                      << col_indicator \
>                      << ">" \
>                      << endl
>
> //=========================================
> void sql_error_print (
>                 const char * const msg_i,
>                 const char * const conclusion_i
>                 )
> {
>         cout << msg_i
>              << " : "
>              << conclusion_i
>              << ";  sqlca.sqlcode = "
>              << sqlca.sqlcode
>              << endl;
>
>         cout << ""
>              << sqlca.sqlerrm.sqlerrmc
>              << endl;
>
>         cout << "in "
>              << oraca.orastxt.orastxtc
>              << "..."
>              << endl;
>
>         cout << "on line "
>              << oraca.oraslnr
>              << " "
>              << "of "
>              << oraca.orasfnm.orasfnmc
>              << endl;
>
>         EXEC SQL WHENEVER SQLERROR CONTINUE;
>
>         EXEC SQL ROLLBACK RELEASE;
>
> } // void sql_error_print ()
>
> //=========================================
> void sql_error_action (const char * const msg_i)
> {
>         sql_error_print (msg_i, "Cannot Do It");
>         assert (0);
> } // void sql_error_action ()
>
> //=========================================
> void ListRecords()
> {
> EXEC SQL BEGIN DECLARE SECTION;
> char    *select_col_value="SELECT * FROM FFF";
>
> long    col_value1;
> char    col_value2[15];
> char    col_value3[15];
> char    col_value4[15];
> char    col_value5[15];
>
> short   indicator1;
> short   indicator2;
> short   indicator3;
> short   indicator4;
> short   indicator5;
>
> EXEC SQL END DECLARE SECTION;
>
>         //===========================
>         EXEC SQL WHENEVER SQLERROR DO sql_error_action ("PREPARE
> the_exec");
>         EXEC SQL PREPARE the_exec FROM :select_col_value;
>
>         //===========================
>         EXEC SQL WHENEVER SQLERROR DO sql_error_action ("DECLARE
> the_cursor");
>         EXEC SQL DECLARE the_cursor CURSOR FOR the_exec;
>
>         //===========================
>         EXEC SQL WHENEVER SQLERROR DO sql_error_action ("OPEN
> the_cursor");
>         EXEC SQL OPEN the_cursor;
>
>         cout << "Available records: " << endl;
>
>         for(int i = 1; ;i++)
>         {
>                 EXEC SQL WHENEVER SQLERROR DO sql_error_action ("FETCH
> the_cursor");
>                 EXEC SQL FETCH the_cursor INTO
>                                             :col_value1 INDICATOR
> :indicator1,
>                                             :col_value2 INDICATOR
> :indicator2,
>                                             :col_value3 INDICATOR
> :indicator3,
>                                             :col_value4 INDICATOR
> :indicator4,
>                                             :col_value5 INDICATOR
> :indicator5;
>
>                 if (sqlca.sqlcode == 1403)
>                 {
>                         cout << "BREAK-" << sqlca.sqlcode << endl;
>                         break;
>                 }
>
>                 //===========================================
>                 cout << "======================================="
>                      << endl;
>                 cout << "select ["
>                      << i
>                      << "] : \t"
>                      << "sqlca.sqlcode = <"
>                      << sqlca.sqlcode
>                      << ">"
>                      << endl;
>                 PRINT_VALUE (1, col_value1, indicator1);
>                 PRINT_VALUE (2, col_value2, indicator2);
>                 PRINT_VALUE (3, col_value3, indicator3);
>                 PRINT_VALUE (4, col_value4, indicator4);
>                 PRINT_VALUE (5, col_value5, indicator5);
>                 cout << endl;
>
>                 //===========================================
>
>         } // for(int i = 1; ;i++)
>
>         cout << "FINISH " << endl;
>
>         EXEC SQL WHENEVER SQLERROR DO sql_error_action ("CLOSE
> the_cursor");
>         EXEC SQL CLOSE the_cursor;
>
> } // void ListRecords()
>
> //===============================
> int main ()
> {
> EXEC SQL BEGIN DECLARE SECTION;
> char    *username       = "aaa";
> char    *password       = "bbb";
> EXEC SQL END DECLARE SECTION;
>
>         //===========================
>         EXEC SQL WHENEVER SQLERROR DO sql_error_action ("Connect to
> ORACLE");
>         EXEC SQL CONNECT :username IDENTIFIED BY :password;
>         cout << endl << "Connected to ORACLE." << endl;
>
>         //===========================
>         cout << endl;
>         ListRecords ();
>
>         return 0;
> }
>
> //------------------- Pro*C++ code : END ------------------
>
> //#########################################################
> //------------------- Database Status : BEGIN -------------
>
> SQL> select * from FFF;
>
>       FFF1       FFF2       FFF3 FFF4                FFF5
> ---------- ---------- ---------- ------------------- ------------
>         19                    13 ZZZ_1_4             ZZZ_1_5
>         12         22                                ZZZ_2_5
>         15         32         33 ZZZ_3_4
>
> //------------------- Database Status : END ---------------
>
> //#########################################################
> //------------------- Running Results : BEGIN -------------
>
> Connected to ORACLE.
>
> Available records:
> =======================================
> select [1] :    sqlca.sqlcode = <0>
>         col [1] : value = <19>,  indicator = <0>
>         col [2] : value = <              >,  indicator = <-1>
>         col [3] : value = <13            >,  indicator = <0>
>         col [4] : value = <ZZZ_1_4       >,  indicator = <0>
>         col [5] : value = <ZZZ_1_5       >,  indicator = <0>
>
> =======================================
> select [2] :    sqlca.sqlcode = <0>
>         col [1] : value = <12>,  indicator = <0>
>         col [2] : value = <22            >,  indicator = <0>
>         col [3] : value = <              >,  indicator = <-1>
>         col [4] : value = <              >,  indicator = <-1>
>         col [5] : value = <ZZZ_2_5       >,  indicator = <0>
>
> =======================================
> select [3] :    sqlca.sqlcode = <0>
>         col [1] : value = <15>,  indicator = <0>
>         col [2] : value = <32            >,  indicator = <0>
>         col [3] : value = <33            >,  indicator = <0>
>         col [4] : value = <ZZZ_3_4       >,  indicator = <0>
>         col [5] : value = <              >,  indicator = <-1>
>
> BREAK-1403
> FINISH
>
> //------------------- Running Results : END ---------------
>
> //#########################################################
> //------------------- Environment --------------------------
>
> === Oracle 8.0.5
> === Pro*C/C++ : Release 8.0.5.0.0
> === SunOS 5.6
>
> //---------------------------------------------------------
>
> //#########################################################
>
> Sent via Deja.com http://www.deja.com/

> Before you buy.
>

Sent via Deja.com http://www.deja.com/
Before you buy. Received on Mon Oct 18 1999 - 09:13:35 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US