-- Some table with a column named "TODAY"
CREATE TABLE T AS (SELECT LEVEL today FROM DUAL CONNECT BY LEVEL < 5);
-- Use PL/SQL to create a view on the given table
-- with a dynamic column name
DECLARE
today varchar(10) := TO_CHAR(SYSDATE,'DD/MM/YYYY');
query varchar(200) := 'CREATE OR REPLACE VIEW V'
|| ' AS SELECT today "' || today || '"'
|| ' FROM T';
BEGIN
execute immediate query;
END;
2条答案
按热度按时间4nkexdtk1#
截至目前,列名为“今天”,我希望它是当前日期
你不能配置一个列来自动改变它的名字。来反映当前的日期或其他什么。
然后,要查询具有 right 列名的“表”,您只需查询
V
而不是T
:如果你每天都重新创建视图,比如说从一个作业中调用上面的PL/SQL代码,你每天都会看到一个以当前日期作为列名的视图。但是,由于底层表保持不变,你仍然可以使用规范名称
today
来查询它。例如,如果你需要在该表上执行连接,这一点很重要。ojsjcaue2#
如果您希望列名标题显示为与表中定义的列名不同的内容,则只需为该列使用
as "DisplayColumnName"
子句:但是你需要通过编程来生成SQL语句,你所使用的编码环境将决定如何动态地创建一个select语句。