我有一个要求,比如在groovy和grails中调用存储过程。我使用Mongodb作为数据库。 任何人都可以告诉我一步一步调用存储过程
答案 0 :(得分:0)
旨在通过Grails服务实现此目的。
// Inject a data source:
def dataSource //or def dataSource_<other named DS name>
def serviceMethod() {
Sql sql = new Sql(dataSource_messages)
def sqlCall = "exec sp_name :param1, :param2"
final paramMap = [param1: new Timestamp(dateFrom.time), param2: new Timestamp(dateTo.time)]
log.info "Running: $sqlCall with params $paramMap"
def rows = []
try {
rows = sql.rows(sqlCall, paramMap)
} catch (Exception e) {
log.warn "Could not execute ${sqlCall} with params ${paramMap}: ${e.getMessage()}", e
}
rows
}
可选择转换为命令对象:
rows.collect { row -> new MyCmd(row) }
public class MyCmd {
String spField1
String spField2
Date dateTime
}
答案 1 :(得分:0)
您还可以按照以下方式进行操作
def dataSource
def dataList = []
Sql sql = Sql.newInstance(dataSource)
def camp = "Campaign"
dataList = sql.rows("{call sp_upldata(?)}",[camp])
sql.close()
这里sp_upldata
是在数据库中创建的存储过程的名称,而camp
存储要从中查找结果的数据。通过查询获得的数据将保存在{{1}中}。
在使用普通sql查询的情况下,将执行上述示例查询
dataList