Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Re:Record Length ...
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).
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
![]() |
![]() |