Bạn đang tìm kiếm USER_TAB_COLUMNS
- tất cả các cột và mô tả của chúng trong lược đồ mà truy vấn được thực thi trong - hoặc ALL_TAB_COLUMNS
- giống nhau ngoại trừ tất cả các bảng mà người dùng có quyền xem.
Một truy vấn điển hình có thể là:
select *
from user_tab_columns
where table_name = 'MY_TABLE'
order by column_id
column_id
là "thứ tự" của cột trong bảng.
Bạn nên đảm bảo rằng 'MY_TABLE' được viết hoa trừ khi bạn đang thêm các bảng có cách viết hoa (một ý tưởng tồi), trong trường hợp đó bạn cần sử dụng một cái gì đó như = "MyTable"
.
Cụ thể là desc
tương đương với phần sau mà tôi đã đánh cắp từ ss64, một tài nguyên Oracle tốt:
select column_name as "Name"
, nullable as "Null?"
, concat(concat(concat(data_type,'('),data_length),')') as "Type"
from user_tab_columns
where table_name = 'MY_TABLE';
Bạn có thể tìm thấy tất cả kiểu xem này bằng cách select * from dictionary
, là cấp cao nhất của từ điển dữ liệu hoặc bằng cách xem tài liệu.
Ngoài ra còn có DBA_TAB_COLUMNS
, giống với ALL_TAB_COLUMNS
, nhưng đối với mọi bảng trong cơ sở dữ liệu. Điều này giả định rằng bạn có đặc quyền để xem cả nó và các bảng. Nếu bạn không có quyền truy cập vào bảng này, bạn cần có DBA để cấp cho bạn SELECT ANY DICTIONARY
đặc ân.