Fix view columns

This commit is contained in:
Jan Kvetina 2022-03-09 22:40:10 +01:00
parent 2b9bef54b8
commit 5eac9192b0

View File

@ -1,7 +1,8 @@
CREATE OR REPLACE VIEW obj_view_columns AS CREATE OR REPLACE VIEW obj_view_columns AS
WITH x AS ( WITH x AS (
SELECT /*+ MATERIALIZE */ SELECT /*+ MATERIALIZE */
app.get_item('$VIEW_NAME') AS view_name, app.get_owner() AS owner,
app.get_item('$VIEW_NAME') AS view_name,
-- --
UPPER(app.get_item('$SEARCH_VIEWS')) AS search_views, UPPER(app.get_item('$SEARCH_VIEWS')) AS search_views,
UPPER(app.get_item('$SEARCH_COLUMNS')) AS search_columns UPPER(app.get_item('$SEARCH_COLUMNS')) AS search_columns
@ -36,31 +37,34 @@ c AS (
CASE WHEN c.column_name LIKE x.search_columns || '%' ESCAPE '\' THEN 'Y' END AS is_found_column CASE WHEN c.column_name LIKE x.search_columns || '%' ESCAPE '\' THEN 'Y' END AS is_found_column
--CASE WHEN c.data_type LIKE x.search_data_type || '%' ESCAPE '\' THEN 'Y' END AS is_found_data_type, --CASE WHEN c.data_type LIKE x.search_data_type || '%' ESCAPE '\' THEN 'Y' END AS is_found_data_type,
--CASE WHEN NVL(c.data_precision, c.data_length) = x.search_size THEN 'Y' END AS is_found_size --CASE WHEN NVL(c.data_precision, c.data_length) = x.search_size THEN 'Y' END AS is_found_size
FROM user_tab_columns c FROM all_tab_columns c
JOIN user_views t JOIN x
ON t.view_name = c.table_name ON x.owner = c.owner
CROSS JOIN x JOIN all_views t
WHERE t.view_name = NVL(x.view_name, t.view_name) ON t.owner = c.owner
AND t.view_name != app.get_dml_table(t.view_name) AND t.view_name = c.table_name
AND (c.table_name LIKE '%' || x.search_views || '%' ESCAPE '\' OR x.search_views IS NULL) WHERE t.view_name = NVL(x.view_name, t.view_name)
AND t.view_name != app.get_dml_table(t.view_name)
AND (c.table_name LIKE '%' || x.search_views || '%' ESCAPE '\' OR x.search_views IS NULL)
) )
SELECT SELECT
c.view_name, c.view_name,
c.column_id, c.column_id,
c.column_name, c.column_name,
c.column_name AS column_name_old, c.column_name AS column_name_old,
c.data_type, c.data_type,
c.data_default, c.data_default,
c.avg_col_len AS avg_length, c.avg_col_len AS avg_length,
-- --
CASE WHEN c.nullable = 'N' THEN 'Y' END AS is_nn, CASE WHEN c.nullable = 'N' THEN 'Y' END AS is_nn,
-- --
m.comments m.comments
FROM c FROM c
CROSS JOIN x CROSS JOIN x
LEFT JOIN user_col_comments m LEFT JOIN all_col_comments m
ON m.table_name = c.view_name ON m.owner = x.owner
AND m.column_name = c.column_name AND m.table_name = c.view_name
AND m.column_name = c.column_name
WHERE 1 = 1 WHERE 1 = 1
AND (c.is_found_column = 'Y' OR x.search_columns IS NULL) AND (c.is_found_column = 'Y' OR x.search_columns IS NULL)
--AND (c.is_found_data_type = 'Y' OR x.search_data_type IS NULL) --AND (c.is_found_data_type = 'Y' OR x.search_data_type IS NULL)