需要用存儲過程解決。
員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團隊的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。成都創(chuàng)新互聯(lián)公司堅持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因為“專注所以專業(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡單”。公司專注于為企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、電商網(wǎng)站開發(fā),微信小程序定制開發(fā),軟件按需網(wǎng)站設(shè)計等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。
如數(shù)據(jù)庫中存在兩張表,要給兩張表都增加兩個同樣名稱同樣屬性的字段,需要用以下代碼:
1、創(chuàng)建測試用表test和test1
create table test
(id int,
name varchar2(10));
create table test1
(id int,
name varchar2(10));
2、要為兩個表同時增加id1和name1字段。使用代碼:
declare
v_sql varchar2(2000);
v_table_name varchar2(30);
cursor c1 is select table_name from user_tables;
begin
open c1;
loop --提取一行數(shù)據(jù)到c1
fetch c1 into v_table_name;
--判讀是否提取到值,沒取到值就退出
--取到值c_job%notfound 是false
--取不到值c_job%notfound 是true
exit when c1%notfound;
v_sql:='alter table '||v_table_name||' add id1 int';
execute immediate v_sql;
v_sql:='alter table '||v_table_name||' add name1 varchar2(10)';
execute immediate v_sql;
end loop;--關(guān)閉游標
close c1;
end;
3、執(zhí)行代碼,成功無誤后,查詢test表和test1表結(jié)構(gòu)
這里涉及到兩個系統(tǒng)視圖的應(yīng)用dba_tab_cols和user_tab_cols;
dba_tab_cols包含所有用戶下表字段信息;user_tab_cols包含當(dāng)前用戶下表信息;使用tba_tab_clos查詢表字段類型需要指定owner(用戶)
上述兩個表中,table_name,column_name,data_type就可以滿足需要查詢表字段類型了,具體類型對應(yīng)其他字段還有另外定義,比如varchar2,date,number還對應(yīng)在data_length字段有值,說明類型其長度
user_tab_columns和user_tab_cols都可以滿足問題要求,但是兩張視圖還是有區(qū)別的,主要是包含字段的區(qū)別等,具體區(qū)別可以度娘哈,這里就不贅述。
一、 SQLPLUS中,直接用 DESC[ribe] tablename 即可。
二、在外部應(yīng)用程序調(diào)用查看ORACLE中的表結(jié)構(gòu)時,只能用下面的語句代替:
1、看字段名與數(shù)據(jù)類型
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、查看指定列的數(shù)據(jù)類型
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');
查詢表中所有字段的值
select * from tab;
查找表中所有的字段名
select column_name from user_tab_cols where table_name='TAB';
注意TAB是你的表名,必須大寫
1、在企業(yè)管理器中,點擊對應(yīng)方案下面的數(shù)據(jù)表,就可以看見表結(jié)構(gòu)了,字段是否有默認值都可以看見;
2、通過pl/sql
developer,在tables下面,右鍵對應(yīng)數(shù)據(jù)表,選擇查看或編輯,就可以看見表結(jié)構(gòu)了,字段是否有默認值都可以看見。
1、創(chuàng)建測試表,
create table test_cols(id varchar2(20),remark varchar2(20),ex_filed1 varchar2(20),ex_filed2 varchar2(20));
2、編寫sql,查看系統(tǒng)視圖,可以看到該用戶下所有表的字段信息,select * from user_tab_cols;
3、編寫sql,查詢剛創(chuàng)建的表,字段信息,select * from user_tab_cols t where table_name = 'TEST_COLS';
4、編寫sql,查詢該表的字段數(shù),這樣對于字段較多的表,結(jié)果更明顯;
select count(distinct column_name) from user_tab_cols t where table_name = 'TEST_COLS'