ORA-01720:无法授予视图权限

时间:2016-10-25 12:29:59

标签: sql oracle view oracle11g grant

我有一个带有一些表的用户,我将三个权限授予另一个用户。现在我需要创建一个视图并将select选择授予另一个用户,如下所示:

用户A

GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE_A TO USER_B WITH GRANT OPTION;

GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE_B TO USER_B WITH GRANT OPTION;

GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE_C TO USER_B WITH GRANT OPTION;

用户B

CREATE OR REPLACE VIEW V_XYZ AS SELECT * FROM TABLE_A, TABLE_B, TABLE_C;

GRANT ALL ON V_XYZ to USER_C;

这给出了以下错误:

ORA-01720: "grant option does not exist for '%s.%s'"

*Cause:    A grant was being performed on a view or a view was being replaced
           and the grant option was not present for an underlying object.
*Action:   Obtain the grant option on all underlying objects of the view or
           revoke existing grants on the view.

2 个答案:

答案 0 :(得分:-1)

尝试给予:

#pragma omp parallel for
    for (int i = 0; i < count; i++)
    {
        float vertX = WIDTH/2 * (vertices[i*2]+1);
        float vertY = -HEIGHT/2*(vertices[i *2+ 1]+1)+HEIGHT;

        float fact = (mouseX - vertX)*(mouseX - vertX) + (mouseY - vertY)*(mouseY - vertY) + 120;
        glm::vec2 acc = 3.f / fact*(glm::vec2(mouseX, mouseY) - glm::vec2(vertX, vertY)) * (float)bPressed;
        acc.y *= -1;

        speed[i*2] += acc.x - speed[i*2]/200;
        speed[i *2+ 1] += acc.y - speed[i *2+ 1] / 200;

        vertices[i*2] += speed[i*2]*dt;
        vertices[i *2+ 1] += speed[i*2+1]*dt;

    }

答案 1 :(得分:-1)

您要求将所有权限提供给USER_C,但只有4个权限已授予您基础表。尝试从A到B授予ALL PRIVILEGES,或者在SELECT,UPDATE,INSERT,DELETE上限制从B到C的授权。