首页 > 解决方案 > 使用带有groovy参数的SQL语句执行过程

问题描述

客户端 SQL 过程像这样开始,他们正在等待价值:@Firma

EXECUTE @RC = [dbo].[Aktualizace_stavba_data]

@Firma 

GO 

GROOVY SCRIPT - 我需要在您的帮助下进行编辑:

import de.uplanet.scripting.groovy.util.Safely

def conn  = g_dbConnections["IPOS20016"]

String Firma= g_request.get("Firma"); //prepared value

//now I dont know how to implement and also write correctly the rest of the script.

def strCall = "{call inc(2,3)}"

def call = conn.prepareCall(strCall)
call.execute()

def rs = call.getResultSet()
def contentProc

while (rs.next()){
contentProc = rs.getInt(1)
}

rs = Safely.close(rs)
stmt = Safely.close(call)

标签: sql-servergroovyexecute

解决方案


我使用以下方法调用了一个存储过程,该过程接受一个参数并返回一个 VARCHAR 值。在 Groovy 中,您通常不使用 resultSet。

conn.query("{? = call dbo.Aktualizace_stavba_data(?)}", [Sql.out(Sql.VARCHAR.type), 'parm1']) { returned ->
    println "returned: ${returned}"
}

编辑:我删除了第一个 '? = ' 从查询中,这是一个错误。官方文档在这里:https ://docs.groovy-lang.org/latest/html/documentation/sql-userguide.html#_stored_procedures


推荐阅读