SORU
5 Ocak 2012, PERŞEMBE


Oracle sütun adlarını almak için sorgu

Böyle bir tablo: sütun almak için bir mySQL sorgu var

String sqlStr="select column_name 
from information_schema.COLUMNS 
where table_name='users' 
and table_schema='" _db "' 
and column_name not in ('password','version','id')"

Nasıl Oracle 11 g veritabanı yukarıdaki sorgu değişiyor. İhtiyacım olan sütun adları seviyesinde bağımsız olarak tablo 'kullanıcılar' hariç bazı sütunları belirten bir şema, şu anda sahip olduğum tüm tablolar bir tablo ben de belirtmek tabspace adı yerine şema adı?

Ayrıca bunun genel bir HQL ? Ayrıca yeni Oracle veritabanı (Oracle yeni duyuyorum), ben sadece Tablo adı, şema adı eşdeğer (mantıklı mı?)

CEVAP
5 Ocak 2012, PERŞEMBE


information_schema.COLUMNS Oracle eşdeğer tablolar geçerli kullanıcı, ALL_TAB_COLS ya da tablolar tüm kullanıcılara ait DBA_TAB_COLS ait USER_TAB_COLS.

Tablo şema eşdeğer değildir, ne de tablo adını vermek zorunda mı.

Şema/kullanıcı adı veren bu tablo, belirli bir kullanıcıya ait sütun ALL_TAB_COLS DBA_TAB_COLS sorgulamak istiyorsanız kullanın. sizin durumunuzda, sorgu gibi bir şey tahmin ediyorum:

String sqlStr= "
SELECT column_name
FROM   all_tab_cols
WHERE  table_name = 'users'
       AND owner = ' ||  _db  || '
       AND column_name NOT IN ( 'password', 'version', 'id' ) 
"

Bu yaklaşım ile, SQL enjeksiyon riski olduğunu unutmayın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • backyardjay

    backyardjay

    8 ŞUBAT 2009
  • ehowhome

    ehowhome

    22 NİSAN 2009
  • Just So

    Just So

    3 HAZİRAN 2007