假设我有一个很大的where子句,需要在多视图中使用它。因此,我认为可以将整个代码保存在变量,UDF函数或Somewhere中,而不是在多个位置编写where子句。完成后,我要做的就是在视图上调用那个Variable / UDF。基本上减少了样板代码。
例如
Where
'_ALL' in
(select distinct col1 from tablename
where ID = CURRENT_USER())
or
COLNAME in
(select distinct col1 from tablename
where ID = CURRENT_USER())
)
这只是我在此处添加的1个条件,我必须在10个这样的列上写类似的条件。我需要在20个不同的地方使用同一段代码。
所以我正在查看的输出是:
where $variable
or
where UDF()
如何使它看起来不太复杂?
答案 0 :(得分:0)
您不能以这种方式使用UDF。如果所有视图都引用相同的基表,可能会起作用的是使用初始where子句从视图创建这些视图。像这样:
create or replace view base_view as
select * from base_table
Where
'_ALL' in
(select distinct col1 from tablename
where ID = CURRENT_USER())
or
COLNAME in
(select distinct col1 from tablename
where ID = CURRENT_USER())
)
然后,您可以在此基本视图之上创建视图:
create or replace view new_view
as
select * from base_view where ....