ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

示例:使用 SQL 在 Oracle 中创建数据库视图

  • 授予表权限
  • 创建视图以限制访问
  • 创建视图以连接两个表
  • 授予视图权限
复杂程度:
初级
数据要求:
使用自备的数据

您可以使用 SQL 在企业级地理数据库中创建表和要素类的视图,以限制视图用户可访问的列和记录,您也可以定义视图以从两个表或一个要素类和一个表中连接信息。如果视图定义中包含空间列,则视图用户可在 ArcGIS Desktop 客户端中可视化地图中的要素。

本主题中的示例介绍了如何在 Oracle 数据库中创建视图。一个视图限制用户对特定列的访问。另一个视图显示两个不同表的内容。该示例基于具有以下定义的表:

员工的表定义

CREATE TABLE employees (
 emp_id number(38) unique not null,
 name varchar2(32),
 department number not null,
 hire_date date not null
);

区域的表定义

CREATE TABLE employees ( objectid number(38) unique not null, reg_id number(38) unique not null, emp_id number(38) not null, rname nvarchar(32),  region st_geometry
);

授予表权限

如果创建视图的用户不是该视图所依据的表的所有者,则表所有者必须至少授予视图创建者从表中进行选择的权限。如果视图所有者需要将视图权限授予其他用户,则表所有者还必须授予视图所有者将视图权限授予其他用户的权限。

在本例中,视图所依据的表 (员工和区域) 归用户 gdb 所有。创建视图的用户是 rocket。此外,rocket 还将向其他用户授予视图权限。因此,gdb 必须向 rocket 授予从员工和区域表中进行选择的权限并且还包括 WITH GRANT OPTION,以使 rocket 能够将视图的 SELECT 权限授予其他用户。

conn gdb/gdb.bdg
GRANT SELECT 
 ON gdb.employees 
 TO rocket WITH GRANT OPTION;
GRANT SELECT 
 ON gdb.regions 
 TO rocket WITH GRANT OPTION;

创建视图以限制访问

在本例中,用户 rocket 根据 employees 表创建视图 (view_dept_201),以将访问限制为部门编号为 201 的行:

CREATE VIEW view_dept_201 
 AS (SELECT emp_id,name,department,hire_date)
 FROM gdb.employees 
 WHERE department = 201;

创建视图以连接两个表

在本例中,view—emp_regions_view 将空间表(要素类)与基于 emp_id 列的非空间表连接起来。视图包括区域要素类中的 ObjectID、空间列(region)和区域名称 (rname) 以及 employees 表中的员工姓名和 ID。

CREATE VIEW emp_region_view  AS SELECT (e.emp_name,e.emp_id,r.rname,r.objectid,r.region) 
 FROM employees e,region r 
 WHERE e.emp_id = r.emp_id;

授予视图权限

您可将视图权限授予特定用户,而无需授予这些用户对基表(employees 和 regions)的访问权限。在本例中,将两个视图的 select 权限授予用户 dispatch_mgr:

conn rocket/nopeeking
GRANT SELECT ON rocket.view_dept_201
 TO dispatch_mgr;

dispatch_mgr 用户现在可以访问 view_dept_201 以查看各个部门全部 201 个员工的员工记录,并从 ArcMap 或 ArcGIS Pro 中的数据库连接访问 emp_region_view 以查看所有地区。当 dispatch_mgr 查询视图中的区域时,ArcGIS 将返回区域名称以及该区域中所有员工的名称和 ID。

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2021 Esri. | 隐私政策 | 法律声明