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

Home -> Community -> Mailing Lists -> Oracle-L -> Re:Record Length ...

Re:Record Length ...

From: <dgoulet_at_vicr.com>
Date: Mon, 12 Mar 2001 10:07:59 -0800
Message-ID: <F001.002C9C9B.20010312093523@fatcity.com>

Harsh,

    Are you talking about a 'host variable'? In that case look at the declared size of the field as in:

NBRAHMS:8.04:GOULET> desc module_master

 Name                                     Null?    Type
 ---------------------------------------- -------- --------------
 MODULE_ID                                NOT NULL VARCHAR2(13)
 MODEL_NUMBER                             NOT NULL VARCHAR2(20)
 SERIAL_NUMBER                                     VARCHAR2(15)
 LAST_TEST_DATE                                    DATE
 ARCH_TAPE_ID                                      NUMBER

Now to declare a host variable for this tables stuff I'd use:

EXEC SQL BEGIN DECLARE SECTION;
    VARCHAR module_id[14];
    VARCHAR model_number[21];
    VARCHAR serial_number[16];
    VARCHAR last_test_date[12];
    int arch_tape_id;
EXEC SQL END DECLARE SECTION; The point is that for each character data type you need to allow for a full variable + one for the null terminator. This is because Oracle does not null terminate the data when it hands it back so since a VARCHAR data type is a structure you have both the character data & the length as in:

    /*VARCHAR model_number[21] */
    struct
    { arr[21];

        len;
    }model_number;

So after retrieving a data point you need to:

    model_number.arr[model_number.len] = '\0';

Dick Goulet

____________________Reply Separator____________________
Author: Harsh Agrawal <HARSHA_at_Amdocs.com>
Date:       3/12/2001 5:30 AM

Hi,

I have a table containing CHAR, VARCHAR2, NUMBER and DATE fields.

Is there any way or command to find out the record length in bytes.

This can be useful while defining a Buffer in Pro*C to handle a record.

Thanks in Advance.

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).
--

Please see the official ORACLE-L FAQ: http://www.orafaq.com
--

Author:
  INET: dgoulet_at_vicr.com
Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing). Received on Mon Mar 12 2001 - 12:07:59 CST

Original text of this message

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