Jeśli użytkownik może mieć ograniczenie NOT NULL na kolumnie widoku, uważam, że SELECT z widoku nie powiedzie się, jeśli kolumna ma wartość NULL. Jeśli jest to intencją następnie dodaje może dać ci to, czego szukasz:
CREATE OR REPLACE VIEW some_view AS
SELECT some_field,
some_other_field,
CASE
WHEN field_of_interest IS NOT NULL
THEN CAST(field_of_interest AS BINARY_DOUBLE)
ELSE 1/0
END AS field_of_interest_not_null
FROM some_table;
niezbyt atrakcyjne, a otrzymasz brzydki „ORA-01476: podział jest równy zeru” wiadomość, jeśli oddział ELSE CASE jest brany pod uwagę, ale być może jest to krok na drodze do "lepszego".
Udostępnij i ciesz się.
EDIT: Jeśli celem jest tylko odebrać wiersze, gdzie kolumna docelowa nie jest null może można dodać klauzulę WHERE do widzenia, jak w:
CREATE OR REPLACE VIEW some_view AS
SELECT some_field,
some_other_field,
CAST(field_of_interest AS BINARY_DOUBLE) AS field_of_interest
FROM some_table
WHERE field_of_interest IS NOT NULL;
YMMV.
EDIT2: Patrząc na przykład SQL Server, wydaje się, że funkcja ISNULL jest używany w celu zapewnienia, że kolumna nigdy nie jest NULL. Jeśli jest to dopuszczalne można wykonać następujące czynności:
CREATE OR REPLACE VIEW some_view AS
SELECT some_field,
some_other_field,
CAST(NVL(field_of_interest, 0.0) AS BINARY_DOUBLE) AS field_of_interest
FROM some_table
WHERE field_of_interest IS NOT NULL;
Cytując Bullwinkle „Ten czas fer pewno !!!” :-)
Krzyżyk opublikowany w DBA.SE: http://dba.stackexchange.com/questions/19484/oracle-how-to-create-a-not-null-column-in-a-view –
In w tym przypadku kolumna w widoku nie może mieć wartości null, jeśli podstawowa kolumna tabeli ma ograniczenie nie-puste. Czy chcesz 'desc" MyView "' (mam nadzieję, że tak naprawdę nie używasz nazw obiektów o różnych nazwach!), Aby pokazać to również jako not-null? –
Tak, chcę metadane, aby pokazać go jako not-null. (I nie, to nie są prawdziwe konwencje nazewnictwa). –