IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management  >

Visual Studio .Net 的 DB2 数据库工程

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Abdul Al-Azzawe, DB2 开发工具架构设计师, IBM 旧金山

2003 年 8 月 01 日

所有 .NET 开发人员请注意!请体验一下 Visual Studio .NET 的 DB2 数据库工程,了解用这一集成应用程序开发环境编写、构建和配置面向 DB2 的应用程序有多简单。

相关文章:

简介

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 工程项文件扩展名

项类型 脚本扩展名 元数据扩展名
存储过程 db2spdb2spx
用户定义的函数 db2udfdb2udfx
脚本 db2db2x
杂项 任意扩展名无!





回页首


工程相关性和构建顺序

和其它大多数 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 开发外接程序提供了众多极佳功能,但我们仅仅涉及集成计划的皮毛!





回页首


声明

IBM 公司可能已拥有或正在申请与本文档内容有关的各项专利。提供本文档并未授予用户使用这些专利的任何许可证。您可以用书面方式将许可证查询寄往:

IBM Director of Licensing
IBM Corporation
North Castle Drive Armonk, NY 10504-1785
U.S.A.

所有关于 IBM 未来方向或意向的声明都可随时更改或收回,而不另行通知,它们仅仅表示了目标和意愿而已。



关于作者

照片:Abdul H. Al-Azzawe

Abdul H. Al-Azzawe是 IBM 硅谷实验室(位于美国圣何塞)的高级软件工程师。他于 1990 年加入 IBM,是 IBM 的一位老员工。Abdul 是 Windows 上 SQL 调试器和 DB2 应用程序开发工具的首席架构设计师。在担任该职务之前,他是 IBM 多伦多实验室核心 DB2 引擎开发团队的一员。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款