【问题标题】:Call Stored Procedure in Grails (Step by step)在 Grails 中调用存储过程(一步一步)
【发布时间】:2016-05-10 05:34:05
【问题描述】:

谁能告诉我如何从用户定义路径中的 Grails 调用存储过程。

【问题讨论】:

  • 用户定义的路径是什么意思?存储过程存储在 sql server 上。您想执行存储在文件系统上的 sql 文件吗?

标签: grails grails-controller


【解决方案1】:

为此,您可以使用Groovy Sql

使用 Groovy SQL:

  1. import groovy.sql.Sql
  2. 使用def dataSourcedef sessionFactory 请求对数据源的引用以进行事务
  3. 使用def sql = new Sql(dataSource)def sql = new Sql(sessionFactory.currentSession.connection())创建一个Sql对象
  4. 根据需要使用 Groovy SQL

Grails 将自动管理与数据源的连接。

注意:dataSourcesessionFactory 是您必须在 pojo/bean 类中注入的 bean。

所以要执行写在你文件上的sql代码:

String sqlFilePath = grailsApplication.parentContext.servletContext.getRealPath("/data/proc.sql")
String sqlString = new File(sqlFilePath).text

Sql sql = new Sql(sessionFactory.currentSession.connection())
sql.execute(sqlString)

这将在您的 sql 服务器上执行您的文件中写入的任何 sql 语句。

【讨论】:

  • String sql= SELECT * FROM acc_project_setup aps WHERE 1=1 :projectQuery 这是我在 dummy.sql 文件中的主要查询,我想在这个文件中传递 :projectQuery 字符串参数。我尝试使用下面的 Map 传递参数,但不执行。 String projectQuery = "AND ajd.project_id=1" StringsqlFilePath=Holders.grailsApplication.mainContext.getResource("/path/to/file/"+ "dummy.sql").file.getAbsoluteFile() def sqlString = new File(sqlFilePath ).text Sql sql = new Sql(dataSource) sql.rows(sqlString, [projectQuery : projectQuery]) 错误:“$1”或附近的语法错误
猜你喜欢
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-30
  • 2019-05-07
  • 2020-01-15
相关资源
最近更新 更多