【问题标题】:Execute a SQL Server Procedure using SoapUI JBDC Request使用 SoapUI JBDC 请求执行 SQL Server 过程
【发布时间】:2018-04-03 20:40:05
【问题描述】:

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

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

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

谢谢大家。

【问题讨论】:

  • 您的 sql 生成结果集或输出参数?你能在问题中提供完整的sql吗?你有什么错误?

标签: sql sql-server jdbc groovy soapui


【解决方案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 测试步骤更容易。

【讨论】:

    【解决方案2】:

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

    例子

    enter image description here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 2016-11-02
      • 1970-01-01
      相关资源
      最近更新 更多