在grails中使用rows()方法调用sql存储过程?

在grails中使用rows()方法调用sql存储过程?,sql,stored-procedures,grails,groovy,Sql,Stored Procedures,Grails,Groovy,我在一个以前存在的grails项目中工作,该项目内置了一些搜索功能。它使用我的Sql Server数据源创建了一个新的Sql对象,并且它似乎正在尝试调用一个存储过程,如下所示: def qResults = sql.rows(spCall) 其中spCall是一个字符串,如下所示: EmployeeQueryClient 'SomeClient', 1,1,0 其中“EmployeeQueryClient”是存储过程的名称,其他内容是参数 我找不到任何支持此类调用的文档-这是否正确?如果不正

我在一个以前存在的grails项目中工作,该项目内置了一些搜索功能。它使用我的Sql Server数据源创建了一个新的Sql对象,并且它似乎正在尝试调用一个存储过程,如下所示:

def qResults = sql.rows(spCall)
其中spCall是一个字符串,如下所示:

EmployeeQueryClient 'SomeClient', 1,1,0
其中“EmployeeQueryClient”是存储过程的名称,其他内容是参数


我找不到任何支持此类调用的文档-这是否正确?如果不正确,我将如何真正做到这一点?

在上面显示的代码中,sql是的一个实例。它提供了一个
行(字符串sql)
方法,可用于执行sql并返回结果

一般来说,如果要调用存储的proc,我认为这个
rows
方法是一个不好的选择,因为必须将proc的名称和所有参数连接到一个字符串中,从类型安全性和可读性的角度来看,这都是一个不好的主意

相反,请使用同一类提供的重载
call
方法之一,这些方法专门用于调用存储过程。例如,如果您只想调用过程(忽略它返回的任何结果),请使用:

此处用于调用存储过程的语法

{调用PROC_NAME(PROC_ARGS)}

如果你不使用MySql,你需要用RDBMS用来调用存储过程的任何东西来替换它

call
方法的重载版本使您能够处理返回的任何结果和/或存储过程的输出参数

sql.call("{call EmployeeQueryClient(?, ?, ?, ?)}", ['SomeClient', 1, 1, 0])