Not Null alanları bulmak

Oracle veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
Nick_
Üye
Mesajlar: 122
Kayıt: 01 Eki 2007 09:28
Konum: Konya

Not Null alanları bulmak

Mesaj gönderen Nick_ »

S.a arkadaşlar projemde oracle db ye baglanıyorum.tablolardakı data tıplerını,field isimlerini,field uzunluklarını vs asagıdakı sekılde alabılıyorum

Kod: Tümünü seç

Query1.SQL.Text:='select  data_type , data_length , column_name from user_tab_columns where table_name = ABC'
ancak benım not null alanları da bulmam lazım. mesela Firebird de

Kod: Tümünü seç

   SELECT r.RDB$FIELD_NAME AS field_name, r.RDB$NULL_FLAG AS field_not_null_constraint, 
 f.RDB$FIELD_LENGTH AS field_length,
  CASE f.RDB$FIELD_TYPE  
   WHEN 261 THEN 'BLOB'  
   WHEN 14 THEN  'CHAR'  
   WHEN 40 THEN  'CSTRING'  
  WHEN 11 THEN  'D_FLOAT' 
   WHEN 27 THEN  'DOUBLE'   
  WHEN 10 THEN  'FLOAT'    
   WHEN 16 THEN  'INT64'  
   WHEN 8 THEN 'INTEGER'
   WHEN 9 THEN   'QUAD'    
  WHEN 7 THEN  'SMALLINT' 
  WHEN 12 THEN  'DATE'   
   WHEN 13 THEN  'TIME'    
  WHEN 35 THEN  'TIMESTAMP'
  WHEN 37 THEN   'VARCHAR'  
  ELSE 'UNKNOWN'  END AS field_type, 
   coll.RDB$COLLATION_NAME AS field_collation, 
  cset.RDB$CHARACTER_SET_NAME AS field_charset  
   FROM RDB$RELATION_FIELDS r 
   LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME 
  LEFT JOIN RDB$COLLATIONS coll ON r.RDB$COLLATION_ID = coll.RDB$COLLATION_ID 
   AND f.RDB$CHARACTER_SET_ID = coll.RDB$CHARACTER_SET_ID 
  LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID 
  WHERE r.RDB$RELATION_NAME='TABLES'  ORDER BY r.RDB$FIELD_POSITION
sorgusunu gonderdıgımde not null alanlarda "1" degerı yazıyordu boylece hangı alanın not null oldugunu gorebılıyordum. bunu oracle da nasıl yapabılırım..
Bilmemek ayıp değil öğrenmek isteyene öğretmemek ayıp:)
Kullanıcı avatarı
Nick_
Üye
Mesajlar: 122
Kayıt: 01 Eki 2007 09:28
Konum: Konya

Re: Not Null alanları bulmak

Mesaj gönderen Nick_ »

sorunu asagıdakı kod ıle cozdum..

Kod: Tümünü seç

SELECT column_name, data_type, data_lenght, nullable FROM ALL_TAB_COLUMNS
WHERE table_name = 'Table_Name' 
Bilmemek ayıp değil öğrenmek isteyene öğretmemek ayıp:)
Cevapla