一种快速批量创建子版本的方法
来源:互联网 发布:淘一兔淘宝信誉查号 编辑:程序博客网 时间:2024/05/02 02:09
经常使用ArcGIS版本编辑的用户经常会为随着时间越来越长,查询和编辑效率下降所苦恼,而且用户也都明白只能使用版本压缩来解决这个问题,但是想要彻底的进行版本压缩,首先必须将相关的子版本名称给删除掉,这是让人很头疼的事情,因为有些用户的业务是多用户编辑的,可能这个业务创建了几十个版本,也有相关的父子版本,那么每次都要删除再重新创建,肯定会让用户崩溃的,但是不删除又不能彻底的进行版本压缩,这就成为了一个矛盾。
其实这个没有关系,ArcSDE提供了创建版本的存储过程,我么可以将我们的业务进行梳理,写一个批处理的SQL语句就可以解决了。
让我们看看这个存储过程
SQL> desc sde.version_user_ddlFUNCTION CHECK_MV_RELEASE RETURNS NVARCHAR2PROCEDURE CREATE_VERSION参数名称 类型 输入/输出默认值?------------------------------ ----------------------- ------ -------- PARENT_NAME NVARCHAR2(97) IN NAME NVARCHAR2(97) IN/OUT NAME_RULE BINARY_INTEGER IN ACCESS BINARY_INTEGER IN DESCRIPTION NVARCHAR2 IN//我们来看看分别表示什么?//其中权限当然有private、public、protected,这几个参数也可以使用数字表示EXEC sde.version_user_ddl.create_version ( sde.DEFAULT’, ---------------父版本 :mv_version, ---------------子版本 sde.version_util.C_take_name_as_given, sde.version_util.C_version_private,--------权限 'multiversioned view edit version');------版本描述For the name argument: • sde.version_util.C_take_name_as_given attempts to use the name provided and if a version exists owned by the user, an error will be encountered. • sde.version_util.C_generate_unique_name ensures the input name is unique if there is an existing version with the same name owned by the user. If the objective is to ensure a version is created, use the C_generate_unique_name constant and check the OUT argument value for name. For the access argument: • sde.version_util.C_version_private creates the version as private. Only the owner and SDE administrator are able to access the version. • sde.version_util.C_version_public creates the version as public. All users are able to access the version. • sde.version_util.C_version_protected creates the version as protected. All users may view the version, but only the owner and SDE administrator may edit the version.
SQL> exec sde.version_user_ddl.create_version('SDE.DEFAULT','V1',sde.version_util.C_take_name_as_given,sde.version_util.C_version_private,'create version name v1 from sde.default');BEGIN sde.version_user_ddl.create_version('SDE.DEFAULT','V1',sde.version_util.C_take_name_as_given,sde.version_util.C_version_private,'create version name v1 from sde.default'); END; *第 1 行出现错误:ORA-06550: 第 1 行, 第 57 列:PLS-00363: 表达式 'V1' 不能用作赋值目标ORA-06550: 第 1 行, 第 7 列:PL/SQL: Statement ignored
// mv_version 为变量名,NVARCHAR2(10) 为变量的数据类型VARIABLE mv_version NVARCHAR2(10);// mvedits 为版本名称EXEC :mv_version := 'mvedits';那么根据上面所述,我们就可以来完成以下的例子了
我们需要创建一个类似上面的版本结构
variable mv_version nvarchar2(10);/exec :mv_version:='V1';/exec sde.version_user_ddl.create_version('sde.DEFAULT',:mv_version,sde.version_util.C_take_name_as_given,sde.version_util.C_version_private,'create version name v1 from sde.default');/exec :mv_version:='V11';/exec sde.version_user_ddl.create_version('V1',:mv_version,sde.version_util.C_take_name_as_given,sde.version_util.C_version_private,'create version name v11 from v1');/exec :mv_version:='V12';/exec sde.version_user_ddl.create_version('V1',:mv_version,sde.version_util.C_take_name_as_given,sde.version_util.C_version_private,'create version name v12 from v1');/exec :mv_version:='V13';/exec sde.version_user_ddl.create_version('V1',:mv_version,sde.version_util.C_take_name_as_given,sde.version_util.C_version_private,'create version name v13 from v1');/exec :mv_version:='V2';/exec sde.version_user_ddl.create_version('sde.DEFAULT',:mv_version,sde.version_util.C_take_name_as_given,sde.version_util.C_version_private,'create version name v2 from sde.default');/exec :mv_version:='V21';/exec sde.version_user_ddl.create_version('V2',:mv_version,sde.version_util.C_take_name_as_given,sde.version_util.C_version_private,'create version name v21 from v2');/上面是编写的相关文件,然后连接用户执行即可
C:\Users\Administrator>sqlplus sde/sde@orcl_165SQL*Plus: Release 11.2.0.1.0 Production on 星期三 3月 7 16:39:13 2012Copyright (c) 1982, 2010, Oracle. All rights reserved.连接到:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> @ d:\1.sqlSP2-0103: SQL 缓冲区中无可运行的程序。PL/SQL 过程已成功完成。SP2-0103: SQL 缓冲区中无可运行的程序。PL/SQL 过程已成功完成。SP2-0103: SQL 缓冲区中无可运行的程序。PL/SQL 过程已成功完成。SP2-0103: SQL 缓冲区中无可运行的程序。PL/SQL 过程已成功完成。SP2-0103: SQL 缓冲区中无可运行的程序。PL/SQL 过程已成功完成。SP2-0103: SQL 缓冲区中无可运行的程序。PL/SQL 过程已成功完成。SP2-0103: SQL 缓冲区中无可运行的程序。PL/SQL 过程已成功完成。SP2-0103: SQL 缓冲区中无可运行的程序。PL/SQL 过程已成功完成。SP2-0103: SQL 缓冲区中无可运行的程序。PL/SQL 过程已成功完成。SP2-0103: SQL 缓冲区中无可运行的程序。PL/SQL 过程已成功完成。SP2-0103: SQL 缓冲区中无可运行的程序。PL/SQL 过程已成功完成。SP2-0103: SQL 缓冲区中无可运行的程序。PL/SQL 过程已成功完成。然后我们使用ArcGIS Desktop10.1查看版本关系(新特性啊)
所以,以后如果有上面需求,使用这种方法创建,肯定是非常高效的。
PS:其实这个存储过程也提供了删除版本的方法
EXEC sde.version_user_ddl.delete_version('mv_version');在批量删除版本方法是类似的
- 一种快速批量创建子版本的方法
- 一种快速文件传输的方法
- 快速排序的一种方法
- sql2005 批量删除表格的一种方法
- dos2unix批量转换的一种方法
- 一种批量删除数据的方法
- 一种创建子视图窗口的办法
- 创建数据表的一种方法
- 创建线程的一种方法
- 一种利用Cmake,使得低版本Visual Studio IDE快速运行高版本VS项目的方法~
- magento------在block对应的phtml文件中加载子block的另外一种简洁快速的方法
- 推荐一种快速提高英语口语的方法
- 推荐一种快速提高英语口语的方法
- 实数除法的一种快速实现方法
- 实数求根的一种快速实现方法
- 一种快速治疗咳嗽的方法
- 一种快速治疗鼻塞的方法
- 推荐一种快速提高英语口语的方法
- jdk6原生态webservice
- boost 中spirit 连续解析 employee 成容器变量
- iPad 3发布在即,各平板优势大比拼
- Xml Tips
- c++primer 3/7--类作用域,隐含的 this 指针
- 一种快速批量创建子版本的方法
- POJ-2536(长方体体积确定,求面积最小值)
- java学习笔记--第二天
- Windows消息
- Sql Server中的日期与时间函数
- Android_Linux休眠唤醒
- C语言学习笔记(3)指针初探
- Linux 2.6内核中新的锁机制--RCU
- Arm linux 内核移植及系统初始化过程分析