2017-08-03 7 views
0

テーブルTEST_ORDがあります。ここには、ORD_DAYID列が仮想列です。私は、このクーミンの価値がどこにどのように分布しているのかを知りたい。私はそれが仮想列であるので、私は挿入文でこの列を使用することはできません。列の値が入力されている場所を確認する方法

私は以下のクエリを試してみましたが、そのは、どこで、どのように列の値が移入されてから私の情報を与えていない:

Select * from all_source where upper(TEST) like '%TEST_ORD_ID%'; 
+0

リンクの下に参照してください:http://docs.oracle.com/cd/B28359_01/server.111/b28279/chapter1。 htm#OBJECTIVENO04641 –

答えて

1

を仮想列を生成するために使用される式はのDATA_DEFAULT列に表示されます[DBA|ALL|USER]_TAB_COLUMNSが表示されます。例えばのために

がdefinitonごとに移入するウィル仮想列を持つテーブルを作成しました。

CREATE drop TABLE virtab(
    id   NUMBER, 
    first_name VARCHAR2(10), 
    last_name VARCHAR2(10), 
    salary  NUMBER(9,2), 
    comm1  NUMBER(3), 
    comm2  NUMBER(3), 
    salary1  AS (ROUND(salary*(1+comm1/100),2)), 
    salary2  NUMBER GENERATED ALWAYS AS (ROUND(salary*(1+comm2/100),2)) VIRTUAL, 
    CONSTRAINT employees_pk PRIMARY KEY (id) 
); 

選択

select * from DBA_TAB_COLUMNS where table_name = 'VIRTAB' and column_name = 'SALARY2' 

出力:

SQL> select DATA_DEFAULT from DBA_TAB_COLUMNS where table_name = 'VIRTAB' and column_name = 'SALARY2'; 

DATA_DEFAULT 
-------------------------------------------------------------------------------- 
ROUND("SALARY"*(1+"COMM2"/100),2) 
+0

これは私が欲しいものではありません。しかし、彼らはどのようにこの列に値を挿入していますか?どの手順からパッケージ? – Andrew

+0

しかし、あなたはあなたの質問でこれを言及したことはありません。あなたは「このクームの価値がどこにどのように分布しているかを知りたがっている」と質問します。どこからプロシージャからデータが取り込まれたのか、そして 'virtual'カラムの目的は、条件が満たされたときにカラムの値が'自動的に '計算されることです。したがって、 'procedure'も' insert'文もこの列に値を設定できません。それは定義に従って自動的に計算される。私の例を参照してください – XING

+0

はい私は今undestood – Andrew

関連する問題