0

我有一个要求,比如在 groovy 和 grails 中调用存储过程。我正在使用 Mongodb 作为数据库。谁能告诉我一步一步调用存储过程

4

2 回答 2

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
}
于 2012-09-25T05:15:00.173 回答
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要从中查找结果的数据。查询得到的数据将保存在dataList. 上面的示例查询将在普通 sql 查询的情况下进行

select * from table_name where table_name.column_name = 'Campaign';

于 2018-07-09T11:37:54.917 回答