WHY THE 'CHAR' IS USING WITH SIZE ?
declare
lf constant varchar2(1 char) := chr(10);
lf2 constant varchar2(2 char) := lf || lf;
begin
dbms_output.put_line('LINE-X'||lf||'LINE-Y'||lf2||'LINE-Z');
end;
RESULT IS FINE AS BELOW
LINE-X LINE-Y
LINE-Z
PL/SQL procedure successfully completed.
AND IF IT IS POSIBLE WHICH SINARIO WE CAN USE 'CHAR'?
CodePudding user response:
When declaring a varchar2
datatype variable (or column), you have two options when setting its size: char
and byte
:
SQL> create table test
2 (a varchar2(1 byte),
3 b varchar2(2 char)
4 );
Table created.
SQL>
The first option (byte
) means that you reserved exactly one byte for that column.
The second option (char
) means that you chose to store one character into that column. In many/most cases, there's no difference. But, if you use character set that contains multibyte characters, you can't tell how many bytes will each character occupy so - for example - varchar2(2 byte)
doesn't guarantee that you'll manage to store all characters (for example the one that uses 3 bytes won't fit).