Quantcast
Channel: Question and Answer » oracle
Viewing all articles
Browse latest Browse all 717

Find Underlying Data Type (int – integer) of Oracle Table instead of number

$
0
0

I can create an example table using following syntax.

CREATE TABLE "TABLE2" (
  "COLUMN_INT" INT NOT NULL,
  "COLUMN_INTEGER" INTEGER NOT NULL,
  "COLUMN_SMALLINT" SMALLINT NOT NULL,
  "COLUMN_NUMBER" NUMBER NOT NULL,
  "COLUMN_DECIMAL" DECIMAL NOT NULL);

After that I query USER_TAB_COLUMNS table using following query.

SELECT COLUMN_NAME,DATA_TYPE FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'TABLE2';

I get following result.

COLUMN_NAME                    DATA_TYPE                                                                                                 
------------------------------ -------------
COLUMN_INT                     NUMBER                                                                                                     
COLUMN_INTEGER                 NUMBER                                                                                                     
COLUMN_SMALLINT                NUMBER                                                                                                     
COLUMN_NUMBER                  NUMBER                                                                                                     
COLUMN_DECIMAL                 NUMBER   

If I use VS.NET add-in for oracle to get DDL for this table. I get following.

-- ****** Object: Table DENEME.TABLE2 Script Date: 05.05.2013 21:43:11 ******
CREATE TABLE "TABLE2" (
  "COLUMN_INT" NUMBER NOT NULL,
  "COLUMN_INTEGER" NUMBER NOT NULL,
  "COLUMN_SMALLINT" NUMBER NOT NULL,
  "COLUMN_NUMBER" NUMBER NOT NULL,
  "COLUMN_DECIMAL" NUMBER NOT NULL,
    CHECK ("COLUMN_INT" IS NOT NULL),
    CHECK ("COLUMN_INTEGER" IS NOT NULL),
    CHECK ("COLUMN_SMALLINT" IS NOT NULL),
    CHECK ("COLUMN_NUMBER" IS NOT NULL),
    CHECK ("COLUMN_DECIMAL" IS NOT NULL))
/

If I use SQL Developer

--------------------------------------------------------
--  DDL for Table TABLE2
--------------------------------------------------------

  CREATE TABLE "DENEME"."TABLE2" 
   (    "COLUMN_INT" NUMBER(*,0), 
    "COLUMN_INTEGER" NUMBER(*,0), 
    "COLUMN_SMALLINT" NUMBER(*,0), 
    "COLUMN_NUMBER" NUMBER, 
    "COLUMN_DECIMAL" NUMBER(*,0)
   ) SEGMENT CREATION DEFERRED 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  TABLESPACE "USERS" ;
--------------------------------------------------------
--  Constraints for Table TABLE2
--------------------------------------------------------

  ALTER TABLE "DENEME"."TABLE2" MODIFY ("COLUMN_DECIMAL" NOT NULL ENABLE);
  ALTER TABLE "DENEME"."TABLE2" MODIFY ("COLUMN_NUMBER" NOT NULL ENABLE);
  ALTER TABLE "DENEME"."TABLE2" MODIFY ("COLUMN_SMALLINT" NOT NULL ENABLE);
  ALTER TABLE "DENEME"."TABLE2" MODIFY ("COLUMN_INTEGER" NOT NULL ENABLE);
  ALTER TABLE "DENEME"."TABLE2" MODIFY ("COLUMN_INT" NOT NULL ENABLE);

If I use TOAD.
TOAD DDL Image

Toad give me following DDL.

CREATE TABLE TABLE2
(
  COLUMN_INT       INTEGER                      NOT NULL,
  COLUMN_INTEGER   INTEGER                      NOT NULL,
  COLUMN_SMALLINT  INTEGER                      NOT NULL,
  COLUMN_NUMBER    NUMBER                       NOT NULL,
  COLUMN_DECIMAL   INTEGER                      NOT NULL
)
;

It seems that I can not get INT, INTEGER values, I used in my create table syntax?
Int, Integer, small int seems to be a syntactic sugar only. But Toad at least holds information about INTEGER part even though he considers smallint,int,decimal and integer same.

Is there any way to find that if a column is INT/INTEGER/SMALLINT using SQL?


Viewing all articles
Browse latest Browse all 717

Trending Articles