【问题标题】:Can not create a view with v$parameter无法使用 v$parameter 创建视图
【发布时间】:2015-03-27 00:12:47
【问题描述】:

我需要创建一个视图,并且我正在此视图中执行 UNION ALL,但它说我没有权限。视图是这样的:

CREATE OR REPLACE VIEW exemple_view AS      
    SELECT 'Version', v.banner, '' as VALUE_EXEMPLE FROM v$version v
    UNION ALL
    SELECT 'cursor_sharing', v.value, 'EXACT' FROM v$parameter v where v.num = 1492

我是用系统用户登录的,所以我确定权限不是问题,并且工会工作在视图之外,权限问题仅出现在创建视图。如果我像这样完美地运行查询:

SELECT 'Version', v.banner, '' as VALUE_EXEMPLE FROM v$version v
        UNION ALL
        SELECT 'cursor_sharing', v.value, 'EXACT' FROM v$parameter v where v.num = 1492

错误:ORA-01031:权限不足

如果我创建这样的视图,它可以正常工作。没有 v$ 参数。

CREATE OR REPLACE VIEW exemple_view AS
  SELECT * FROM ( 
    SELECT 'Version', v.banner, '' as VALUE_EXEMPLE FROM v$version v
    UNION ALL
    SELECT 'Version', v.banner, '' as VALUE_EXEMPLE FROM v$version v
    ) t

有什么想法吗? 谢谢!

【问题讨论】:

    标签: sql oracle sql-view


    【解决方案1】:

    您无权选择v$parameter

    它给了我另一种错误,抱怨第一列没有指定列名:ORA-00998: must name this expression with a column alias

    试着给它一个:

    CREATE OR REPLACE VIEW exemple_view AS      
    SELECT 'Version' AS "Version", v.banner, '' as VALUE_EXEMPLE FROM v$version v
    UNION ALL
    SELECT 'cursor_sharing', p.value, 'EXACT' FROM v$parameter p where p.num = 1492;
    

    【讨论】:

    • 我说我有权限,我可以选择它(当不在视图内时),只是不能用选择创建视图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2019-12-17
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多