oracle檢視某表字段型別

2021-09-07 19:21:23 字數 1779 閱讀 2018

今天遇到乙個問題:要求在可重複執行的sql指令碼新增一段sql**:修改當前的資料型別。因為sql**放在重複執行的指令碼中,那須考慮到資料型別滿足條件時則不進行修改。一時不知道怎麼解決。然後就搜尋出上面鏈結的博文。最後解決了。

--如果當前字段不是varchar2(64)型別的則執行

prompt modify columns_name for temp.your_table_name ......

declare

v_rowcount integer;

begin

select count(*) into v_rowcount from dual where exists(

select t.* from user_tab_columns t

where table_name = upper('your_table_name')

and t.column_name = upper('columns_name')

and t.data_type = 'varchar2'

and t.data_length < 64);

if v_rowcount = 1 then

execute immediate 'alter table temp.your_table_name modify columns_name varchar2(64) default '' ''';

end if;

end;

/

一、sqlplus中,直接用 desc[ribe] tablename 即可。

二、在外部應用程式呼叫檢視oracle中的表結構時,只能用下面的語句代替:

1、看欄位名與資料型別  

select   *   from   cols     

where table_name=upper('table_name');

--(user_tab_columns縮寫cols)

2、檢視全部列

select   *   from   user_tab_columns   

where table_name = upper(『tablename』);

3、檢視某些列

select  column_name,data_type,data_length,data_precision ,data_scale 

from all_tab_columns

where table_name=upper('tablename');

4、檢視指定列的資料型別

select data_type  

from user_tab_columns t

where t.column_name=upper('fielda列名')

and t.table_name =upper(trim('test2表名'));

5、通過user_constraints檢視所有約束   

select   *   from   user_constraints  where   table_name   =   upper('tablename');

6、檢視主鍵約束:   

select   *   from   user_constraints   where   constraint_type='p' and  table_name=upper('table_name');

Oracle應用之修改表字段型別

mysql對於有資料和沒資料的表字段型別都可以隨意修改,不過oracle就不一樣。假如表a有個字段a,本來為number型別,然後我們想修改為varchar2型別。1 欄位a沒資料的情況,改為varchar2 10 可以如下 alter table a modify a varchar2 10 2 ...

Oracle修改表字段以及表型別

win7 oracle pl sql 一張表 lyz emp 建立表lyz emp create table lyz emp e id number 10 not null e oldname varchar2 2 not null primary key e id 測試表lyz emp是否建立成功...

Oracle操作表,字段

0.建立表 create table table name as select from table name b 1.oracle 修改表名 alter table old table name rename to new table name 大寫為系統命令 2.oracle通過altertab...