2017-08-03 4 views
0

Ich habe Tabelle TEST_ORD, wo ich Spalte ORD_DAYID, die virtuelle Spalte ist. Ich möchte wissen, woher und wie der Wert in diesem coumn ist. Weil ich diese Spalte in der Insert-Anweisung nicht verwenden kann, da es sich um eine virtuelle Spalte handelt.Wie zu überprüfen, wo die Spalte Wert

habe ich versucht, die unter Abfrage aber seine mir nicht die Informationen zu geben, von wo und wie der Wert in der Spalte wird bevölkern:

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

Bitte folgenden Link entnehmen: http://docs.oracle.com/cd/B28359_01/server.111/b28279/chapter1. htm # OBJECTIVENO04641 –

Antwort

1

Der Ausdruck der virtuellen Spalte zu erzeugen, verwendet wird, in der DATA_DEFAULT Spalte aufgeführt die [DBA|ALL|USER]_TAB_COLUMNS Ansichten.

Für zB:

erstellte Tabelle mit virtuellen Spalte, die gemäß der Definiton bestückt werden wil.

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) 
); 

Selection

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

Ausgang:

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

nein das ist nicht was ich will. Aber wie fügen sie den Wert in diese Spalte ein? Aus welchem ​​Verfahren, Paket? – Andrew

+0

Aber dann hast du das nie in deiner Frage erwähnt. Du fragst: "Ich möchte wissen, woher und wie der Wert in diesem Preis ist". Wo haben Sie erwähnt, dass es von einer Prozedur bevölkert wird und ich Ihnen auch sagen wollte, dass der Zweck der 'virtuellen' Spalte darin besteht, dass der Wert für die Spalte 'automatisch' berechnet wird, wenn die Bedingungen erfüllt sind. Also weder 'procedure' noch irgendeine' insert'-Anweisung kann diese Spalte füllen. es würde automatisch per definition berechnet werden. Siehe mein Beispiel – XING

+0

ja, ich habe jetzt nicht mehr gedacht – Andrew

Verwandte Themen