从Grails调用Oracle包
有没有办法在Oracle软件包中调用函数/过程? 我可以这样调用存储过程: sql.call“调用myproc(param1,param2)” 当我试图将同样的东西应用于一个包时: sql.call“调用mypackage.myfunction(param1,param2)” 我有错误:ORA-06576:不是有效的函数或过程名 有什么帮助吗 谢谢 试试这种语法:从Grails调用Oracle包,oracle,grails,stored-procedures,groovy,Oracle,Grails,Stored Procedures,Groovy,有没有办法在Oracle软件包中调用函数/过程? 我可以这样调用存储过程: sql.call“调用myproc(param1,param2)” 当我试图将同样的东西应用于一个包时: sql.call“调用mypackage.myfunction(param1,param2)” 我有错误:ORA-06576:不是有效的函数或过程名 有什么帮助吗 谢谢 试试这种语法: sql.call '{call mypackage.myproc(?,?)}', [p1, p2] 如果它是一个函数: sql.c
sql.call '{call mypackage.myproc(?,?)}', [p1, p2]
如果它是一个函数:
sql.call '{? = call mypackage. myfunction(?,?)}', [result, p1, p2]
请尝试以下语法:
sql.call '{call mypackage.myproc(?,?)}', [p1, p2]
如果它是一个函数:
sql.call '{? = call mypackage. myfunction(?,?)}', [result, p1, p2]
请在“存储过程支持”部分下查看。再看看api,第一个链接就是我的例子。与软件包无关。我的猜测是,我必须直接通过“存储过程支持”部分下的Hibernate@JacobASeversonCheck来完成。再看看api,第一个链接就是我的例子。与软件包无关。我猜我必须直接通过Hibernate@JacobASeverson
{call mypackage.myproc(?,)},[param1,param2]
来完成,如果您连接到数据库的用户有权在该包中执行过程,从而在包之前添加模式名:'{call schema_name.mypackage.myproc(?)}它与模式无关,因为我可以通过java(而不是groovy)Class.forName(“oracle.jdbc.OracleDriver”);String url=“jdbc:oracle:thin://localhost:port/xxx“String user=“username”String password=“passwd”Connection Connection=DriverManager.getConnection(url、用户、密码);CallableStatement call=connection.prepareCall(“{call mypkg.myproc(param1,param2)}”);call.executeQuery();
{call mypackage.myproc(?)},[param1,param2]
将输出相同的错误检查,如果您连接到DB的用户被授予在该包中执行过程的权限,请在包之前添加架构名称:{call schema_name.mypackage.myproc(?)}它与架构无关,因为我可以通过java(而不是groovy)Class.forName运行它(“oracle.jdbc.OracleDriver”);字符串url=“jdbc:oracle:thin://localhost:port/xxx“String user=“username”String password=“passwd”Connection Connection=DriverManager.getConnection(url、用户、密码);CallableStatement call=Connection.prepareCall({call mypkg.myproc(param1、param2)});call.executeQuery();