如何在grails和groovy中调用存储过程

时间:2012-09-24 13:32:28

标签: grails stored-procedures groovy

我有一个要求,比如在groovy和grails中调用存储过程。我使用Mongodb作为数据库。 任何人都可以告诉我一步一步调用存储过程

2 个答案:

答案 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