中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> IBM专区 > DB2 > .NET technology
Visual Studio .Net 的 DB2 数据库工程
作者:佚名 时间:2005-09-07 11:49 出处:互连网 责编:小渔
              摘要:Visual Studio .Net 的 DB2 数据库工程

DB2 开发工具架构设计师, IBM 旧金山
2003 年 8 月
所有 .NET 开发人员请注意!请体验一下 Visual Studio .NET 的 DB2 数据库工程,了解用这一集成应用程序开发环境编写、构建和配置面向 DB2 的应用程序有多简单。

编者按:用于 Visual Studio .NET 的 IBM DB2 开发外接程序可从 DB2 .NET 启用 beta 测试版 2获得,在推出 DB2 V8 修订包 2 之时它也可以作为 DB2 V8 修订包 2 的一部分获得。

相关文章:

  • 用于 Visual Studio .Net 的 IBM DB2 开发外接程序
  • 在使用 DB2 通用数据库的 Microsoft .Net 数据应用程序中创建并链接 LOB

简介

IBM DB2 工具用于 Visual Studio .Net 的 IBM DB2® Universal Database™ 开发外接程序是一组专为 DB2 UDB 设计的紧密集成的应用程序开发与管理工具。DB2 数据库工程模板使您能利用脚本来开发服务器端对象,其中包括存储过程、用户定义的函数(user-defined function,UDF)、表、视图和索引等。

本文详细地概述了 Visual Studio .NET 解决方案资源管理器中新的 DB2 数据库工程支持。

DB2 数据库工程概述
DB2 数据库工程使您能利用脚本来开发服务器端对象。这些 DB2 脚本可能包含 DB2 数据定义语言(data definition language,DDL)和数据操作语言(data manipulation language,DML)SQL 语句。可以用这些脚本来创建 SQL 存储过程、SQL 用户定义的函数、表、视图、索引、触发器和类型等。

使用 DB2 数据库工程,可以:

  • 添加全新或现有的 SQL 存储过程脚本。
  • 添加全新或现有的 SQL 用户定义的函数(UDF)脚本。
  • 添加全新或现有的基于通用模板的脚本,这些模板包含受支持的 DB2 数据定义语言(DDL)和数据操作语言(DML)。
  • 在解决方案中指定工程相关性和工程构建顺序。
  • 指定构建配置选项(包括脚本文件构建顺序)。
  • 将脚本文件检入任何已配置的源代码控制管理系统(如 Microsoft® Visual Source Safe)。

添加 DB2 数据库工程
可以使用 Add New Project对话框将特定于 DB2 的数据库工程添加到 Visual Studio 解决方案中。用于 Visual Studio.Net 的 IBM DB2 开发外接程序为您提供一个位于 IBM Projects 文件夹下的新 DB2 数据库工程(DB2 Database project)。

图 1. IBM Projects 下的 DB2 数据库工程
IBM Projects 下的 DB2 数据库工程

DB2 数据库工程是基于存储器的 Visual Studio 工程。工程下的每个文件夹对应工程文件夹下的实际文件系统文件夹。工程文件夹下的每一项对应一个或多个文件。

为工程选择 DB2 数据库引用
当构建 DB2 数据库工程时,工程脚本文件被编译。编译脚本文件意味着根据对为工程定义的 DB2 数据库引用执行 DDL 和 DML 脚本。可以在每个 工程构建配置中选择不同的数据库引用。

要选择数据库引用,只需在 Data Connection工程属性中指定 DB2 数据连接名称。如果单击 [...]属性按钮,就会弹出 Data Connection对话框,它让您选择一个现有的 IBM Explorer 连接或添加一个新连接。

图 2. 将工程连接到数据库
将工程连接到数据库

DB2 工程项 — 脚本
可以向任何 Visual Studio 工程添加新的或现有的项。可直接在工程文件夹或任一工程子文件夹之下添加新的项。

DB2 工程文件夹中的所有项都是 DDL 或 DML 脚本文件。尽管 DB2 支持用 Java™ 和其它语言编写的存储过程和 UDF,但只显示 SQL 语言例程。这一限制只适用于创建这些例程的脚本 — 依然可以使用 IBM Explorer 查看和使用这些例程。

DB2 数据库工程中有三个缺省文件夹:procedures、functions 和 scripts。也可将其它文件夹添加到工程中。这些文件夹被用来组织工程项,即 DB2 脚本。每个工程文件夹下的项都是 DB2 脚本文件名,不一定映射成该脚本文件可能创建的任何实际对象名。

DB2 数据库工程项分为两类:

  • 脚本模板文件项,除了脚本文件名称之外不需要任何用户输入来生成缺省脚本文件。这些项包括过程、标量和表函数、触发器、表、表视图、查询和其它类属 DB2 脚本。
  • 脚本向导项,启动用于定制和生成脚本文件的交互式向导。包括创建 SQL 存储过程和 SQL UDF 的向导。已计划随后添加其它功能丰富的向导。

也可以使用 Add New Items对话框添加自己的项模板。本节描述:

  • 过程脚本和模板
  • 函数脚本和模板
  • 类属脚本

过程脚本
DB2 数据库工程的 procedures 文件夹可包含任何用于创建和管理 DB2 SQL 存储过程的脚本文件。这些脚本文件通常包含 DROP 和 CREATE 语句,还包含 GRANT 许可权语句。

已经将存储过程脚本文件与类属脚本文件分开,以允许指定其它存储过程构建选项(包括 z/OS™ 和 OS/390® 高级构建与执行选项,如 WLM 环境选项)。

图 3. 将 DB2 存储过程添加到 DB2 数据库工程
将 DB2 存储过程添加到 DB2 数据库工程

过程脚本模板
如果选择 图 3中显示的 Create Stored Procedure 工程项模板,一个缺省的 DB2 创建存储过程脚本文件就被添加到工程中并在编辑器中显示。该脚本删除样本 SQL 存储过程,然后重新创建一个。可以修改该脚本以包括其它支持 DDL,如授予过程访问权和改变过程等。

清单 1. 缺省存储过程脚本模板

            -- <ScriptOptions errors="off" platform390="off"/>
            @
            -- Drop the stored procedure if one already exists
            DROP SPECIFIC PROCEDURE MySpecificSP
            @
            COMMIT
            @
            -- <ScriptOptions errors="on"/>
            @
            -- Create stored procedure
            CREATE PROCEDURE MyProcedure (  )
            SPECIFIC MySpecificSP
            LANGUAGE SQL
            DYNAMIC RESULT SETS 1
            ------------------------------------------------------------------------
            -- SQL Stored Procedure
            ------------------------------------------------------------------------
            P1:
            BEGIN
            -- Declare cursors
            DECLARE DB2_SP_SQL1
            CURSOR WITH RETURN FOR
            Select ROUTINENAME, ROUTINESCHEMA,
            LANGUAGE from
            SYSIBM.SYSROUTINES;
            -- Cursor left open for client application.
            OPEN DB2_SP_SQL1;
            END P1
            @
            -- Grant access privileges to stored procedure
            GRANT EXECUTE ON SPECIFIC PROCEDURE MySpecificSP
            TO PUBLIC
            @
            

过程脚本向导
如果选择 Create Stored Procedure Wizard工程项模板,DB2 SQL Stored Procedure 向导会指导您根据工程需求来完成定制存储过程主体和脚本文件所需的步骤。

  1. 标识步骤 — 指定过程名称、模式、特定名称和注释。

    图 4. DB2 SQL Stored Procedure Wizard
    DB2 SQL Stored Procedure Wizard

  2. SQL 语句步骤— 为存储过程创建一条或多条 SQL 语句。
  3. 参数步骤— 指定存储过程的参数。
  4. 代码选项步骤— 指定包含代码片段的文件,这些代码片段将被插入到生成的存储过程代码中。另外,指定希望在存储过程中包括的 SQL 错误处理代码。
  5. 脚本选项步骤— 指定包含脚本片段的文件,这些脚本片段将被插入到生成的存储过程脚本中。另外,指定想要生成的其它 SQL 语句。
  6. 摘要和显示代码步骤— 显示您所选选项的摘要和要生成的脚本文件。

函数脚本
DB2 数据库工程的 functions 文件夹可包含任何用于创建和管理 DB2 SQL UDF 的脚本文件。这些脚本文件通常包含 DROP 和 CREATE 语句,还包含 GRANT 许可权语句。

图 5. 向 DB2 数据库工程添加 UDF
向 DB2 数据库工程添加 UDF

函数脚本模板
如果选择 Create User-Defined Function工程项模板,一个缺省 DB2 脚本文件就被添加到工程中并在编辑器中显示。该脚本删除样本 SQL 标量 UDF,然后重新创建一个。

清单 2. 缺省的用户定义函数脚本模板

            -- <ScriptOptions errors="off" platform390="off"/>
            @
            -- Drop the user-defined function if one already exists
            DROP SPECIFIC FUNCTION MySpecificSUDF
            @
            COMMIT
            @
            -- <ScriptOptions errors="on"/>
            @
            -- Create scalar user defined function
            CREATE FUNCTION MySUDF(DUMMY
            INTEGER)
            SPECIFIC MySpecificSUDF
            RETURNS INTEGER
            --------------------------------------------------------------------------
            -- DB2 SQL user-defined function -
            --------------------------------------------------------------------------
            F1:
            BEGIN ATOMIC
            RETURN SELECT COUNT(*)
            FROM SYSIBM.SYSTABLES
            AS TABLES;
            END F1
            @
            -- Grant access privileges to UDF
            GRANT EXECUTE ON SPECIFIC FUNCTION MySpecificSUDF
            TO PUBLIC
            @
            -- <ScriptOptions errors="off"/>
            @
            -- Drop the user-defined function if one already exists
            DROP SPECIFIC FUNCTION MySpecificTUDF
            @
            COMMIT
            @
            -- <ScriptOptions errors="on"/>
            @
            -- Create table user-defined function
            CREATE FUNCTION MyTUDF(DUMMY
            INTEGER)
            RETURNS TABLE (
            NAME VARCHAR(4000), CREATOR
            VARCHAR(4000),
            TYPE
            CHARACTER(254), CTIME
            TIMESTAMP)
            SPECIFIC MySpecificTUDF
            --------------------------------------------------------------------------
            -- DB2 SQL user-defined function -
            --------------------------------------------------------------------------
            F2:
            BEGIN ATOMIC
            RETURN SELECT NAME, CREATOR,
            TYPE, CTIME
            FROM SYSIBM.SYSTABLES;
            END F2
            @
            -- Grant access privileges to UDF
            GRANT EXECUTE ON SPECIFIC FUNCTION MySpecificTUDF
            TO PUBLIC
            @
            

函数脚本向导
如果选择 Create User-Defined Function Wizard工程项模板,该向导将指导您根据工程需求完成定制 UDF 主体和脚本文件所需的步骤。

  1. 标识步骤 — 指定函数名称、模式、特定名称、输出类型(表或标量)和注释。

    图 6. 使用向导创建 SQL UDF
    使用向导创建 SQL UDF

  2. SQL 语句步骤— 创建标量或表格式 SQL 查询。
  3. UDF 返回数据类型步骤— 选择标量类型或表列名及类型的集。
  4. 参数步骤— 指定 UDF 的输入参数。
  5. 代码选项步骤— 指定包含代码片段的文件,这些代码片段将被插入到生成的 UDF 代码中。另外,指定希望在 UDF 中包括的 SQL 错误处理代码。
  6. 脚本选项步骤— 指定包含脚本片段的文件,这些脚本片段将被插入到生成的 UDF 脚本中。另外,指定希望生成的其它 SQL 语句。
  7. 摘要和显示代码步骤— 显示您所选选项的摘要和将要生成的 DB2 脚本文件。

类属脚本
除了支持存储过程和 UDF 脚本之外, Add New Item还让您创建可包含任何有效 SQL 语句的类属 DB2 脚本文件。有创建表、视图、触发器和查询的缺省模板。这些脚本文件被添加到工程中并在编辑器中显示。您将需要根据工程需求来修改脚本文件。

图 7. 向 DB2 数据库工程添加脚本
向 DB2 数据库工程添加脚本

创建表脚本模板
通过使用 DB2 数据库工程,可以在一个类属脚本文件中创建任意数目的 DB2 表和表索引。如果选择 Create Table脚本文件模板,以下脚本文件将被添加到工程中并在编辑器中显示:

清单 3. 缺省的表脚本模板

            -- <ScriptOptions errors="off"/>
            @
            -- Drop old version of table
            DROP TABLE MyTable
            @
            COMMIT
            @
            -- <ScriptOptions errors="on"/>
            @
            -- Create new version of table
            CREATE TABLE MyTable
            (
            ID           SMALLINT NOT NULL,
            NAME         VARCHAR(9),
            DEPT
            SMALLINT CHECK (DEPT
            BETWEEN 10
            AND 100),
            JOB
            CHAR(5)
            CHECK (JOB
            IN ('Sales', 'Mgr', 'Clerk',
            'Tech')),
            HIREDATE
            DATE,
            SALARY
            DECIMAL(7,2),
            COMM         DECIMAL(7,2),
            PRIMARY KEY (ID))
            @
            -- <ScriptOptions platformLUW="off"/>
            @
            -- Create primary key table index for z/OS
            CREATE UNIQUE INDEX MyTableIndex
            ON MyTable(
            ID)
            @
            -- <ScriptOptions platformLUW="on"/>
            @
            -- <ScriptOptions displayGrid="off"/>
            @
            -- Insert a new record
            INSERT INTO  MyTable
            VALUES (1,'John', 15, 'Mgr', '1990-01-01' ,
            40000.00, 1000.00)
            @
            INSERT INTO MyTable
            VALUES (2,'Smith', 15, 'Tech', '1995-12-10' ,
            25000.00, 1000.00)
            @
            INSERT INTO MyTable
            VALUES (3,'James', 15, 'Sales', '1997-05-21' ,
            10000.00, 5000.00)
            @
            -- <ScriptOptions displayGrid="on"/>
            @
            

该脚本删除样本表,然后重新创建一个。可以修改这个脚本以包括高级表属性,如表空间、索引、约束和引用完整性规则。

当编译这个脚本文件时,首先删除旧版本的表,然后创建新表。在输出窗格中显示执行结果。新表不会自动出现在 IBM Explorer 中。要先刷新相应的文件夹。

创建视图脚本模板
通过使用 DB2 数据库工程,可以在一个类属脚本文件中创建任意数目的 DB2 表视图。如果选择 Create View 脚本文件模板,以下脚本文件将被添加到工程中并在编辑器中显示:

清单 4. 缺省的视图脚本模板

            -- <ScriptOptions errors="off"/>
            @
            -- Drop old version of view
            DROP VIEW MyView;
            @
            COMMIT
            @
            -- <ScriptOptions errors="on"/>
            @
            -- Create new version of view
            CREATE VIEW MyView (
            ID, NAME, DEPARTMENT)
            AS SELECT ID,
            NAME, DEPT
            FROM MyTable
            WHERE MyTable.JOB = 'Mgr'
            @
            

当编译这个脚本文件时,首先删除旧版本的视图,然后创建新视图。在输出窗格中显示执行结果。如果不刷新相应的文件夹,新视图不会自动出现在 IBM Explorer 中。

创建触发器脚本模板
通过使用 DB2 数据库工程,可以在一个类属脚本文件中创建任意数目的 DB2 表触发器。如果选择 Create Trigger 脚本文件模板,以下脚本文件将被添加到工程中并在编辑器中显示:

清单 5. 缺省的触发器脚本模板

            -- <ScriptOptions errors="off"/>
            @
            -- Drop the trigger if one already exists
            DROP TRIGGER MyTrigg
            @
            COMMIT
            @
            -- <ScriptOptions errors="on"/>
            @
            -- Create trigger
            CREATE TRIGGER MyTrigg
            AFTER INSERT ON MyTable
            REFERENCING NEW AS N_ROW
            FOR EACH ROW MODE DB2SQL
            WHEN (N_ROW.JOB = 'Mgr')
            BEGIN ATOMIC
            UPDATE MyTable
            SET COMM =
            COMM + 500.00
            WHERE MyTable.
            ID = N_ROW.
            ID;
            END
            @
            

该脚本删除样本触发器然后重新创建一个。可在同一脚本文件中定义多个触发器。

当编译这个脚本文件时,首先删除旧版本的触发器,然后创建新的。在输出窗格中显示执行结果。

创建查询脚本模板
通过使用 DB2 数据库工程,可以在一个类属脚本文件中创建任意数目的 DB2 查询。如果选择 Create Query 脚本文件模板,以下脚本文件将被添加到工程中并在编辑器中显示:

清单 6. 缺省的查询脚本模板

            -- <ScriptOptions displayGrid="off"/>
            @
            -- Insert a new record
            INSERT INTO MyTable
            VALUES (4,'Jeff', 15, 'Mgr', '1997-02-21' ,
            40000.00, 1000.00)
            @
            INSERT INTO MyTable
            VALUES (5,'Nora', 15, 'Tech', '1999-03-01' ,
            25000.00, 1000.00)
            @
            INSERT INTO MyTable
            VALUE (6,'Derek', 15, 'Sales', '2000-01-01' ,
            10000.00, 5000.00)
            @
            -- <ScriptOptions displayGrid="on"/>
            @
            -- Some queries
            SELECT *
            FROM MyTable
            @
            SELECT *
            FROM MyView
            @
            

当编译这个脚本文件时,在输出窗格中显示查询结果。

脚本模板
类属脚本模板是一个空白的脚本文件。可以在这些脚本文件中编码任何受支持的 SQL 语句。这对于开发应用程序比较有用。例如,在某个工程中可能不但必须要创建表,还必须装入数据。可以通过在类属脚本中编码 SQL 装入语句实现这一点,该装入语句会从文本项(已添加到类属工程文件夹中的工程中)装入数据。

高级脚本编制和脚本选项
用于 Visual Studio .NET 的 DB2 开发外接程序提供了功能丰富的脚本编制引擎,它们的作用远不止创建数据库服务器端对象那么简单。还可以创建使用高级脚本编制选项的定制脚本来更好地满足工程需求。

测试脚本
通过使用类属脚本模板,可以创建一个对 DB2 工程所创建的各种数据库元素进行测试的脚本文件。例如,可以创建这样的测试脚本:它创建一个临时表,用测试数据填充它,调用操作该表的工程存储过程,传入任何必需的输入参数,然后清除并回滚该事务。这样就可以用该脚本测试存储过程的功能。

不要在工程构建中包括这些脚本;它们通常位于自己的测试 DB2 数据库工程中。

脚本和数据库事务
缺省情况下,每个脚本都作为一个工作单元执行。新事务在脚本文件编译开始时被创建。如果没有遇到错误,事务在脚本文件编译结束时提交。在编译期间遇到错误时,脚本执行结束并且事务回滚。

如果要使对事务的控制处于比脚本文件更细粒度的级别,也可以在脚本文件中嵌入一组自己的 COMMIT 或 ROLLBACK 语句。

高级脚本选项
DB2 数据库工程脚本文件支持一个特殊的 XML 标记,这个标记允许定义脚本执行选项。这个特殊的 XML 标记以标准的 DB2 注释定界符(即双短划线 --)开头。该脚本选项的 XML 标记是 <ScriptOptions>

忽略错误选项
如果脚本文件执行时遇到错误,编译步骤就停止。在某些情况(错误实际上是警告,允许脚本执行继续)下可能并不期望这样。 CREATE PROCEDURE 语句之前的 DROP SPECIFIC PROCEDURE 语句就是一个例子。这里的 drop 语句确保了可以多次构建脚本并且删除较旧的版本的过程。该 drop 语句在脚本第一次执行时会失败,因为还没有创建过程。

要将错误作为警告处理,可将错误脚本选项设置为“off”。要恢复将错误作为失败处理的缺省行为,可将属性值设置为“on”。

清单 7. 演示错误处理选项用法的脚本片段

            -- <ScriptOptions errors="off"/>
            @
            -- Drop the stored procedure if one already exists
            DROP SPECIFIC PROCEDURE MySchema.MySpecificSP
            @
            -- <ScriptOptions errors="on"/>
            @
            

数据表格输出选项
对于在脚本文件执行期间执行的任何生成数据集的数据库操作,该数据集将在输出数据表格和 IBM DB2 开发外接程序输出视图中以 XML 的形式显示。

尽管这可能很合乎需要(对于通过执行测试脚本查看结果尤其如此),但它并不总是必需的。例如,应避免显示 SQL insert 语句的执行结果,在这种情况下,在输出窗格中显示所产生插入行数就足够了。

要禁止在数据表格中显示执行脚本所产生的数据集,可将 displayGrid 脚本选项的特性值设置为“off”。要恢复缺省的行为,可将特性值设置为“on”。

清单 8. 演示 displayGrid 显示选项用法的脚本片段

            -- <ScriptOptions displayGrid="off"/>
            @
            -- Insert one record into the table
            INSERT INTO MySchema.MyTable
            VALUES (1,'Kreg', 15, 'Mgr', '1990-01-01' ,
            40000.00, 1000.00)
            @
            -- <ScriptOptions displayGrid="on"/>
            @
            

语句分隔符选项
在大多数情况下,数据库工程脚本将包含多条 SQL 语句。必须用字符定界符分隔这些语句。缺省字符定界符是‘@’字符。通过直接访问 userOptions.xml 文件或使用 Tools -> Options -> IBM DB2 Tools可修改这个缺省字符。

当指定了分隔符时,它应保持一致。为确保这一点,可用 statementSeparator选项指定该值。

清单 9. 演示 statementSeparator 源选项用法的脚本片段


            -- <ScriptOptions statementSeparator="@"/>
            @
            

平台限制选项
尽管脚本中的绝大多数 DDL 和 DML 都应遵守 DB2 系列兼容性规则,但在某些情况下,使用特定于平台的 SQL 语句是有意义的。这些语句应只在特定的 DB2 平台上执行。以 CREATE TABLE 语句中的 PRIMARY KEY 子句的用法为例。在 Linux、UNIX® 和 Windows® 上,DB2 将自动创建所需的表索引来强制键唯一性。对于 z/OS,必须手工创建索引。平台限制选项将允许您使用相同的脚本文件做到这一点。

要在 Linux、UNIX 和 Windows 平台上禁止执行语句,可将 platformLUW脚本选项属性设置为“off”。要恢复缺省的行为,可将属性值设置为“on”。对于 z/OS 和 OS/390,可使用 platform390脚本选项属性。

清单 10. 演示 platformLUW 平台限制选项用法的脚本片段

            -- <ScriptOptions platformLUW="off"/>
            @
            -- Create primary key table index for z/OS
            CREATE UNIQUE INDEX MySchema.MyTableIndex
            ON MySchema.MyTable(ID)
            @
            -- <ScriptOptions platformLUW="on"/>
            @
            

工程配置和属性
虽然标准的 Visual Studio 数据库工程 支持配置,但 DB2 数据库工程 支持。Visual Studio 中的每个工程可支持多个构建配置。这一功能是在解决方案或工程级别驱动的。某给定解决方案的解决方案配置列表由 Solution Configurations 对话框管理。

DB2 数据库工程具有多个构建配置这一能力可让您选择不同的工程数据库引用、不同的特定于目标数据库平台的 SQL 构建选项,以及将要根据数据库连接进行编译(执行)的不同脚本文件集等。

带定制属性值编辑器的标准 Visual Studio .NET 属性表格用于管理工程和工程项的属性。

工程属性
每个 DB2 工程都有一组独立于配置(公共)的属性和特定于配置的属性。工程属性包括缺省数据库引用(用于脚本执行)、数据库用户名和密码等。

请注意:特定于配置的属性比公共的工程属性优先级高;这样才可以为每个配置指定不同的数据库连接。

图 8. Visual Studio .NET DB2 数据库工程的工程配置对话框
Visual Studio .NET DB2 数据库工程的工程配置对话框

图 9. Visual Studio .NET DB2 数据库工程的工程属性
Visual Studio .NET DB2 数据库工程的工程属性

项属性
每个 DB2 工程项都有一组特定于配置的属性和独立于配置的属性。

特定于配置的属性比公共的工程属性优先级高;这样才可以对每个配置指定不同的数据库构建选项。

图 10. DB2 存储过程的特定于配置的属性
DB2 存储过程的特定于配置的属性

独立于配置的属性分为两组:基于源代码的和基于设计者的。 基于源代码的属性是从对象(如过程名称和模式)的实际脚本文件解析的。解析发生在打开或保存文件时。 基于设计者的属性不在源代码中定义(如 z/OS 构建选项)。

图 11. DB2 存储过程的独立于配置的属性
DB2 存储过程的独立于配置的属性

持续属性
对于 DB2 工程,工程的公共属性和特定于配置的属性都持续存在于一个 XML 工程文件中。

对于 DB2 工程项,特定于配置的属性持续存在于工程文件中,而公共属性(基于脚本和基于设计者的)则持续存在于一个与每个工程项关联的 XML 文件中。这种实现的优点是始终将工程项与它的属性关联,其中包括将这些文件检入 SCM 或将其作为现有项包括(即,导入)到其它工程中的能力。

为了说明这一点,请考虑工程项 procedure1。该项有一个 procedure1.db2sp 脚本文件和一个 procedure1.db2spx 属性文件(基于 XML)。 procedure1.db2spprocedure1.db2spx 被作为一项处理,并且一同在源代码管理系统中检入和检出。

文件扩展名
下表包括受 DB2 工程支持的文件扩展名集合:

表 1. DB2 工程项文件扩展名
项类型 脚本扩展名 元数据扩展名
存储过程 db2sp db2spx
用户定义的函数 db2udf db2udfx
脚本 db2 db2x
杂项 任意扩展名 无!

工程相关性和构建顺序
和其它大多数 Visual Studio .NET 工程一样,DB2 数据库工程也涉及解决方案工程相关性和构建顺序。

工程相关性
可以使用 Project Dependencies对话框的 Dependencies文件夹指定工程之间的相关性。这是一个非常有用且强大的功能。可以设想这样的情形:某一 DB2 功能测试工程要依赖另一 DB2 工程,后者将实际创建 DB2 对象集,而这些对象将由测试工程测试。再进一步,某一 Web 服务 C# 工程可能依赖于某一 DB2 工程,后者创建一组需要以 Web 服务形式出现的 SQL 存储过程。

图 12. 显示产品之间的相关性
显示产品之间的相关性

工程构建顺序
Project Dependencies对话框的 Build Order选项卡显示根据在 Dependencies对话框中指定的一组工程相关性所产生的工程构建顺序。当执行解决方案构建命令时,就以所显示的顺序构建解决方案中的工程。

图 13. 构建顺序
构建顺序

工程项构建顺序
在 DB2 数据库工程内,可指定工程脚本项的构建顺序。缺省情况下,所有脚本文件都以它们在工程中出现的顺序进行构建。

可通过使用 Item Build Order对话框选择不同的构建顺序。这一强大的功能使您能解析脚本间的相关性,其中,脚本文件 ScriptX 可能引用在另一脚本文件 ScriptY 中创建的对象,这表明必须先编译 ScriptY。

图 14. 指定文件构建顺序
指定文件构建顺序

结束语
用于 Visual Studio .NET 的 IBM DB2 开发外接程序的 DB2 数据库工程功能是一组紧密集成的工具集,它对 Visual Studio .NET IDE 加以扩展以允许快速开发服务器端 DB2 对象。

使用 DB2 数据库工程较之使用 Visual Studio .NET 类属数据库工程的优势在于:

  • 支持从 IBM Explorer 进行的 DB2 管理的提供程序数据连接。
  • 用于生成特定于 DB2 的 DDL 和 DML 脚本的全功能脚本编制向导。
  • 编辑器中预定义的 SQL 代码片段插入。
  • 支持错误处理、显示和事务管理的高级脚本编制选项。
  • 跟踪详细脚本执行结果的专用输出窗格。
  • 支持多个配置选项,允许可能有的不同数据连接和脚本构建选项。
  • 定义工程内脚本项的构建顺序。
  • 内容及动态帮助支持。

尽管 IBM DB2 开发外接程序提供了众多极佳功能,但我们仅仅涉及集成计划的皮毛!

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有