我使用soapui5.1.3 groovy脚本测试步骤执行MS SQL存储过程" find"使用begin,end和id参数作为存储过程的输入。
下面是我的语法,我想用列名" empName"打印所有行。但是当我执行以下语法时,结果值为0.
任何人都可以帮助正确的语法吗?
def result = sql.call("{call find @begin = '01/01/2016 10:00' @end = '01/02/2016 10:00', @id = '1'}") log.info(result)
答案 0 :(得分:1)
您可以按照以下方式执行此操作:
def rowsAffected = sql.call("{call find('01/01/2016 10:00','01/02/2016 10:00','1')}")
println rowsAffected
或者传递参数:
def rowsAffected = sql.call("{call find(?,?,?)}",['01/01/2016 10:00','01/02/2016 10:00','1'])
println rowsAffected
但是,如果您想获得一些结果而不是仅查看受影响的行,则可以执行此操作:
sql.call("{? = call find(?,?,?)}", [Sql.VARCHAR, '01/01/2016 10:00','01/02/2016 10:00','1'],
{ empName->
println empName
})
在最后一个示例中,注意params数组中的第一个元素是返回变量的类型,我想它是VARCHAR
但是如果你的PROCEDURE
会相应地改变}返回不同的类型。
请查看groovy.sql.Sql
API,因为Sql.call
methods有很好的样本。
注意:要与 SOAPUI 一起使用,请记住将数据库供应商特定库放在$SOAPUI_HOME/bin/ext
文件夹中,然后重新启动 SOAPUI 为了加载DB .jar 。