使用SoapUI JBDC请求执行SQL Server过程

时间:2018-04-03 20:40:06

标签: sql sql-server jdbc groovy soapui

我想使用JDBC Request从SoapUI中执行SQL过程,但是我没有成功。当我在SQL Server上运行相同的脚本时,它会给我带来正确的结果。

我成功地使用JDBC和简单的SELECT语句做了很多测试,但是程序没有。

我还尝试使用一些Groovy脚本 - 失败。搜索了SmartBear文档和社区,仅找到了SELECTs示例。

谢谢大家。

enter image description here

2 个答案:

答案 0 :(得分:1)

SmartBear支持论坛有许多线程,人们面临同样的问题。有时,存储过程会返回更新的行数,有时甚至没有。大多数人最终都诉诸于Groovy。

所以,这是一个调用存储过程schemaname.calcs的示例,它接受两个整数IN参数和四个整数OUT参数:

import groovy.sql.Sql

def url = 'full JDBC URL'   // e.g. 'jdbc:sqlserver://127.0.0.1:1433/database'
def user = 'username'
def password = ''
def driver = 'driver class'

def sql = Sql.newInstance(url, user, password, driver)

 sql.call( "{call schemaname.calcs(?, ?, ?, ?, ?, ?)}", [ 10,2, Sql.INTEGER , Sql.INTEGER, Sql.INTEGER, Sql.INTEGER],  
     { outParameter1, outParameter2, outParameter3, outParameter4 ->
         log.info("Result 1 '${outParameter1}'")
         log.info("Result 2 '${outParameter2}'")
         log.info("Result 3 '${outParameter3}'")
         log.info("Result 4 '${outParameter4}'")
     })

sql.close()

或者,调用返回结果集的存储过程schemaname.show_contacts()

def result = []
sql.eachRow('call schemaname.show_contacts()') {
   result << "$it.contact_name $it.phone_number"
}

可能比使用JDBC测试步骤更容易。

答案 1 :(得分:1)

使用命令SET NOCOUNT ON时,可以在JDBC中执行该过程。

例如

enter image description here