...
DB 工具可用于调用存储过程(比如,使用 PL./SQL),如 Support for PL/SQL and Stored Procedures中所述。
流量查看器自动附加到每个 通讯报文查看器自动附加到每个 DB 工具。它允许查看发送到服务器的查询的最终结果(考虑到参数化、变量等等)。在响应中,将显示与 JDBC 相关的对象。
...
启用 Local 选项并指定要查询的数据库的 Driver、 URL、 Username和 Password 。有关配置数据库连接设置的更多详情,请查阅 SOAtest 中的数据库配置参数或 Virtualize 中的数据库配置参数。
如果只查询数据库一次而不需要等待其他命令,还可以启用 Close connection 选项来关闭连接。当您计划将多个 DB 工具连接到同一个 DB 以便所有工具都可以共享一个连接时,不要启用此选项。共享连接可以提高资源效率,而不是为每个 DB 工具在新连接上使用资源。
如果测试套件具有数据库帐户共享属性,则可以连接 Use Local Settings,Use Shared Property或 Use Both。这些选项允许您只使用相应 DB 工具中的设置、共享全局数据库帐户中的设置(作为全局属性添加到测试套件中的全局数据库设置),或者两者都使用。有关如何定义共享属性并将其导出到文件的详细信息,请查阅 添加全局测试组件属性 在 SOAtest 中或 添加全局属性 在 Virtualize 中。
Info | ||
---|---|---|
| ||
流量工具显示连接 通讯报文工具显示连接 ID。检查这个 ID 将帮助您确保 DB 工具使用相同的连接。 |
SQL
...
Query
选项卡
- SQL 查询: Query:允许指定 Fixed 或 Parameterized SQL 语句。
- 如果选中 Fixed ,那么您可以通过输入特殊的字符串
${column}
到文本框并从 Data Source 下拉菜单选择数据源来进行细粒度参数化。在运行期间,该工具将在指定的数据源中查找列。任何字符串值都可以参数化。
例如,如果创建了一个数据源,并且有包含 CA、NY 和 WA 的三行,则可以将以下内容输入到 Fixed 文本框中:SELECT *
FROM People
WHERE state = ’${States}’
运行时,DB工具将创建以下查询:
SELECT *
FROM People
WHERE state = "CA"
SELECT *
FROM People
WHERE state = "NY"
SELECT *
FROM People
WHERE state = "WA"
若要访问可编写数据源中的值,
请使用
${<Data Source Name>: <Column Name>}
注意,冒号和 <列名> 之间需要有一个空格。
若要访问 XML 数据库中的值, 请使用
${<Data Source Column Name mapped to Selected Element>}
- 如果选中 Fixed ,那么您可以通过输入特殊的字符串
- 用分号(;)分隔语句:Separate statements by semicolon (;): 如果启用此选项,工具将用分号分隔 SQL 查询编辑器的内容。有关更多详情信息,请查阅 Statement Separation Behavior。
- 使用 Separate statements by Magic Token 分隔语句(通常用于存储过程):(typically used for stored procedures): 如果启用此选项,该工具将根据提供的 magic token 字符串划分 SQL 查询编辑器的内容。magic token 是一个字符串,它从一行的开头开始,只包含 magic token(在 token 后面有可选的空格)。有关更多详情信息,请查阅 Statement Separation Behavior。
- 用于存储过程的 JDBC OUT 参数类型:parameter types for stored procedures: 允许调用 OUT 参数或返回值的存储过程和函数。
- 如果正在执行常规 SQL 查询或没有任何 OUT 参数的存储过程,可以将该字段保留为空。有关更多详情,请查阅下面的 JDBC OUT Parameter Types for Stored Procedures 。
- 注意,对于每个 DB 工具,都将相同的 JDBC OUT 参数发送到每个可调用语句。要使用不同的 out 参数,请创建一个单独的 DB 工具。
Anchor | ||||
---|---|---|---|---|
|
使用 用分号(;)分隔语句 Separate statements by semicolon (;),工具将用分号分隔 SQL 查询编辑器的内容。使用 使用 Separate statements by Magic Token 分隔语句(通常用于存储过程)(typically used for stored procedures),该工具将根据提供的 magic token 字符串划分 SQL 查询编辑器的内容。magic token 是一个字符串,它从一行的开头开始,只包含 magic token(在 token 后面有可选的空格)。
选择的分隔符(分号或魔法令牌) 不会 发送给服务器。DB 工具将每个分离的子字符串作为具有相同连接的单独 JDBC 调用发送到服务器。这允许一个 DB 工具使用多个查询。根据 SQL 服务器 JDBC 驱动程序的不同,可以在同一个 JDBC 调用中发送多个查询:
- SQL 服务器: Server:同一个 JDBC 调用中允许多个语句(可选用分号分隔)。
- MySQL: 要求将“allowMultiQueries=true”添加到 JDBC URL 中,以允许在同一个 JDBC 调用中有多个查询(用分号分隔)。例如 "jdbc:mysql://boa:3306/test?allowMultiQueries=true"。该特性还需要 4.0 或更高版本的 MySQL 驱动程序。
- DB2:每个 JDBC 调用只接受一条语句。
- Oracle: 每个 JDBC 调用只接受一条语句。
...
- 一个用来创建过程。
- 然后调用过程并获得结果。
Options 选项卡
- Fail on SQL 异常失败:Exception:指定当遇到 SQL 异常时工具是否应该失败。注意,如果将验证工具作为输出链接到此 DB 工具,则验证的结果将决定该工具的成功或失败,而此设置不适用。
- 运行查询后自动提交数据库更改:Auto-commit database changes after running query:指定是否要使用自动提交模式。在自动提交模式(默认)下,SQL 查询自动将更改提交到数据库。否则,更改将只在连接期间可见。
运行查询后回滚数据库更改:Rollback database changes after running query:指定是否启用回滚。启用此功能后,更改将立即恢复。
Info title 更多关于自动提交和回滚的信息 自动提交模式取代回滚模式:如果自动提交模式打开,则自动禁用回滚模式。如果希望使数据库更改只在工具使用期间可见,则禁用自动提交模式。如果要在工具中还原更改,请使用回滚选项。
- XML 编码: encoding:指定是否对 XML 字符进行编码。默认情况下,XML 值被编码为 unicode 字符。但是您可以选择其中一项以下选项来更改字符的编码方式:
- 选中 Unicode 来保存 XML 规范支持的所有 unicode 字符。只编码受限制的 XML 字符,如 "<" and "&"。
- 选中 ASCII 来保护所有 ASCII 字符。编码非 ASCII unicode 字符和受限制的 XML 字符。
- 选中 None 来禁用 XML 编码。字段值的字符,包括受限制的 XML 字符,将在最终文档中按原样表示。
Separate column names from values in the XML output:确定列名应与值分开。这可能让人们更难以读取输出,因此默认情况下禁用了它。
- Use single result format if only one result:确定工具如何格式化输出 XML。如果可能,在启用此选项的情况下,结果将不会嵌套在“<results>”xml
将列名与 XML 输出中的值分开:确定列名应与值分开。这可能让人们更难以读取输出,因此默认情况下禁用了它。
- 如果只有一个结果,使用单一的结果格式:确定工具如何格式化输出 XML。如果启用此选项,如果可能,结果将不会嵌套在“<results>”xml 标记中。如果有多个结果,那么即使启用了此选项,也将使用多输出格式。
...
Anchor | ||||
---|---|---|---|---|
|
用于存储过程的 JDBC OUT 参数类型 字段允许调用提取 parameter types for stored procedures 字段允许调用提取 OUT 参数或返回值的存储过程和函数。如果正在执行常规 SQL 查询或没有任何 OUT 参数的存储过程,可以将该字段保留为空。
...
若要带 4 个 IN 参数的存储过程,请使用
CALL MYPROC(XMLTYPE('<hello>Some XML</hello>'), 55, 'character large object', 'some text')
- 若要调用带 4 个参数(分别为 Oracle XMLType、INTEGER、CLOB 和 VARCHAR)的存储过程,假设第二个(INTEGER)和第四个(VARCHAR)参数是 OUT 参数,那么提供的 SQL 查询内容分可以如下所示
CALL MYPROC(XMLTYPE('<hello>some XML</hello>'), ?, 'character large object', ?)
,并且 JDBC OUT 参数类型字段将拥有内容INTEGER, VARCHAR
- 若要调用返回 VARCHAR 并且带 5 个 OUT 参数(其类型为 OUT INTEGER, IN INTEGER, Oracle XMLTYPE, Oracle CLOB, VARCHAR 和 DATE)的函数,那么 SQL 查询可以如下所示
?
= CALL MYFUNCTION(XMLTYPE('<hello>Some XML</hello>'), 'character large object', ?, 33, ?, ?, ?, ?)
and the 并且 JDBC OUT parameter types field would have the content参数类型字段将具有VARCHAR, INTEGER, SYS.XMLTYPE, CLOB, VARCHAR, DATE
若要调用与上面相同的函数,但对某些参数使用数据源值,请使用
?
= CALL MYFUNCTION(XMLTYPE('${My CML Content Columna name}'), 'character large object', ?, ${Column Name 2}, ?, ?, ?, ?)
DB tool will serialize the function return value and the OUT parameters in XML, similar to how it does with regular SQL queries.这允许您查看执行结果并链接 工具将使用 XML 序列化函数返回值和 OUT 参数,这与常规 SQL 查询的方式类似。这允许您查看执行结果并链接 XML 验证/提取工具(如 XML 断言器和 XML 数据库。
如果返回值或任何 OUT 参数是 CURSOR 类型,则返回值将作为 JDBC ResultSet 处理,并将其序列化为嵌套在整个结果 XML 中的 XML(与处理常规查询结果的方法相同)。- 要调用接受 IN 整数型参数并返回 CURSOR 的函数,可以使用
?
= CALL MYFUNC(15000)
,并且参数类型字段包含CURSOR
。在 CURSOR 返回或 OUT 参数的案例中,DB 工具以 ResultSet XML 格式返回它们,该格式嵌入到 DB 工具的整个 XML 输出中,其中包括与 CURSOR 关联的列名。注意,如果您接收到像 SQLException 这样的消息“类型长度大于最大值”,那么您可能在 Oracle 驱动程序中遇到了一个 bug。如果发生这种情况,请尝试一个更新的 Oracle JDBC 驱动程序。Parasoft 已经证实 ojdbc14.jar 版本 10.2.0.4 没有出现这个问题。
...
下图展示了如何配置 DB 工具查询来调用存储过程的示例:
...
在通讯报文视图器中查看查询结果
当流量视图器工具附加到 当通讯报文视图器工具附加到 DB 工具上,并且 DB 工具执行“SELECT”语句时,流量视图器工具的响应区域将显示一个包含 工具执行“SELECT”语句时,通讯报文视图器工具的响应区域将显示一个包含 DB 查询结果的表。
当 DB 工具执行多个 SQL 语句,并且 XML 响应包含多个结果集时,可以使用组合框(当表中有多个结果集时,在表上方)来确定显示哪个结果集的流量。响应包含多个结果集时,可以使用组合框(当表中有多个结果集时,在表上方)来确定显示哪个结果集的通讯报文。
这里,流量视图器显示结果集 这里,通讯报文视图器显示结果集 2 的结果: