Selectステートメントを使用して、値の代わりに選択した各列のデータ型を取得できますか?
例えば:
SELECT a.name, a.surname, b.ordernum
FROM customer a
JOIN orders b
ON a.id = b.id
結果は次のようになります
name | NVARCHAR(100)
surname | NVARCHAR(100)
ordernum| INTEGER
または、このように列に並んでも構いませんが、重要ではありません。
name | surname | ordernum
NVARCHAR(100) | NVARCHAR(100) | INTEGER
ありがとう
データベースのall_tab_columns
ビューをクエリできます。
SELECT table_name, column_name, data_type, data_length FROM all_tab_columns where table_name = 'CUSTOMER'
DUMP()
を使用して、これを行うにはあまり直感的ではない方法を見つけました
SELECT DUMP(A.NAME),
DUMP(A.surname),
DUMP(B.ordernum)
FROM customer A
JOIN orders B
ON A.id = B.id
次のようなものが返されます。
'Typ=1 Len=2: 0,48'
各列。
Type=1
手段 VARCHAR2/NVARCHAR2
Type=2
手段 NUMBER/FLOAT
Type=12
はDATE
などを意味します。
詳細については、このOracleドキュメントを参照してください Datatype Code
または単純なマッピングの場合 Oracle Type Code Mappings
通常、ビューを作成し、DESC
コマンドを使用します。
CREATE VIEW tmp_view AS
SELECT
a.name
, a.surname
, b.ordernum
FROM customer a
JOIN orders b
ON a.id = b.id
次に、DESC
コマンドは各フィールドのタイプを表示します。
DESC tmp_view
私も同じ状況になりました。回避策として、view
(特権がある場合)を作成して説明し、後で削除しました。 :)
Oracleでビューを作成する権限がない場合は、MS Accessを使用するためにビューを「ハック」する:-(
MS Accessで、SQLを使用してパススルークエリを作成します(ただし、1つのレコードを選択するためにwhere句を追加します)。これを実行すると、1つのレコードを持つテーブルが作成され、すべてのデータ型がOracleと「一致」するはずです。すなわち、パススルー->選択-> MakeTable->テーブル
他にももっと良い方法があると確信していますが、ツールと権限が限られている場合はこれが機能します。
また、Toad for Oracleを使用している場合は、ステートメントを強調表示して、 CTRL + F9 列とそのデータ型の素晴らしい表示が得られます。