Home » SQL & PL/SQL » SQL & PL/SQL » VARCHAR2(0)
VARCHAR2(0) [message #453634] Fri, 30 April 2010 02:21 Go to next message
Its_me_ved
Messages: 979
Registered: October 2009
Location: India
Senior Member
SQL> CREATE TABLE T0430 AS SELECT NULL X FROM DUAL;
CREATE TABLE T0430 AS SELECT NULL X FROM DUAL
                             *
ERROR at line 1:
ORA-01723: zero-length columns are not allowed 


Elapsed: 00:00:00.01
SQL> CREATE TABLE T0430 AS SELECT CAST(NULL AS VARCHAR2(1)) X FROM DUAL;

Table created.

Elapsed: 00:00:00.01
SQL> CREATE VIEW V0430 AS SELECT NULL X FROM DUAL;

View created.

Elapsed: 00:00:00.00
SQL> DESC T0430
 Name                                                                                                              Null?    Type
 ----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------
 X                                                                                                                          VARCHAR2(1)

SQL> DESC V0430
 Name                                                                                                              Null?    Type
 ----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------
 X                                                                                                                          VARCHAR2

SQL> SELECT column_name, data_type, data_length
  2  FROM user_tab_columns
  3  WHERE table_name='V0430';

COLUMN_NAME                    DATA_TYPE                                                                                                  DATA_LENGTH                                                   
------------------------------ ---------------------------------------------------------------------------------------------------------- -----------                                                   
X                              VARCHAR2                                                                                                             0                                                   

Elapsed: 00:00:00.00
SQL> SPOOL OFF


SQL> DROP TABLE T0430;

Table dropped.

Elapsed: 00:00:00.68
SQL> CREATE TABLE T0430( X VARCHAR2(0));
CREATE TABLE T0430( X VARCHAR2(0))
                                *
ERROR at line 1:
ORA-01723: zero-length columns are not allowed 


Elapsed: 00:00:00.00
SQL> CREATE TABLE T0430 AS SELECT CAST(NULL AS VARCHAR2(1)) X FROM DUAL;

Table created.


How come we have VARCHAR2(0) in a view ? What is this VARCHAR2(0)?

VARCHAR2(0) is a null placeholder.If so, then why we can not create the same in case of a table?

Regards,
Ved

[Updated on: Fri, 30 April 2010 02:43]

Report message to a moderator

Re: VARCHAR2(0) [message #453654 is a reply to message #453634] Fri, 30 April 2010 03:15 Go to previous messageGo to next message
Michel Cadot
Messages: 68765
Registered: March 2007
Location: Saint-Maur, France, https...
Senior Member
Account Moderator
As you don't define a type for your column and set it to NULL which a zero length string, Oracle takes VARCHAR2(0) as datatype.

Please keep your lines in 80 characters width; I can't read and understand at the same time both side when scrolling.

Regards
Michel
Re: VARCHAR2(0) [message #453656 is a reply to message #453654] Fri, 30 April 2010 03:29 Go to previous messageGo to next message
Its_me_ved
Messages: 979
Registered: October 2009
Location: India
Senior Member
SQL> set linesize 80
SQL> CREATE TABLE T0430 AS SELECT NULL X FROM DUAL;
CREATE TABLE T0430 AS SELECT NULL X FROM DUAL
                             *
ERROR at line 1:
ORA-01723: zero-length columns are not allowed 


Elapsed: 00:00:00.01
SQL> CREATE TABLE T0430 AS SELECT CAST(NULL AS VARCHAR2(1)) X FROM DUAL;

Table created.

Elapsed: 00:00:00.01
SQL> CREATE VIEW V0430 AS SELECT NULL X FROM DUAL;

View created.

Elapsed: 00:00:00.01
SQL> COLUMN column_name FORMAT a20
SQL> COLUMN data_type FORMAT a20
SQL> column data_length format 99999
SQL> SELECT column_name, data_type, data_length
  2      FROM user_tab_columns
  3      WHERE table_name='V0430';

COLUMN_NAME          DATA_TYPE            DATA_LENGTH                           
-------------------- -------------------- -----------                           
X                    VARCHAR2                       0                           

Elapsed: 00:00:00.01
SQL> SELECT column_name, data_type, data_length
  2      FROM user_tab_columns
  3      WHERE table_name='T0430';

COLUMN_NAME          DATA_TYPE            DATA_LENGTH                           
-------------------- -------------------- -----------                           
X                    VARCHAR2                       1                           

Elapsed: 00:00:00.04
SQL> DROP TABLE T0430
  2  /

Table dropped.

Elapsed: 00:00:00.01
SQL> CREATE TABLE T0430( X VARCHAR2(0));
CREATE TABLE T0430( X VARCHAR2(0))
                                *
ERROR at line 1:
ORA-01723: zero-length columns are not allowed 


Elapsed: 00:00:00.00
SQL> CREATE TABLE T0430 AS SELECT CAST(NULL AS VARCHAR2(1)) X FROM DUAL;

Table created.

Elapsed: 00:00:00.03
SQL> SPOOL OFF


My apologies for the mistake. But
SQL> CREATE TABLE T0430 AS SELECT CAST(NULL AS VARCHAR2(1)) X FROM DUAL;

Here why does you need minimum 1 byte? If varchar2(0) is a placeholder for null it could have varchar2(0).


Re: VARCHAR2(0) [message #453683 is a reply to message #453656] Fri, 30 April 2010 05:19 Go to previous messageGo to next message
Michel Cadot
Messages: 68765
Registered: March 2007
Location: Saint-Maur, France, https...
Senior Member
Account Moderator
Quote:
Here why does you need minimum 1 byte?

You cannot store 0 byte.

Regards
Michel

[Updated on: Fri, 30 April 2010 05:20]

Report message to a moderator

Re: VARCHAR2(0) [message #453692 is a reply to message #453683] Fri, 30 April 2010 05:40 Go to previous message
Its_me_ved
Messages: 979
Registered: October 2009
Location: India
Senior Member
Got it...Thanks.


Regards
Ved
Previous Topic: Desperate Help Needed With Selecting data
Next Topic: Need help with for loops
Goto Forum:
  


Current Time: Wed Aug 20 16:29:56 CDT 2025