起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3385|回复: 14

[结贴] 请问action里面如何调用数据库里写好的function,并且获取到...

[复制链接]

212

主题

1033

帖子

1456

积分

金牌会员

Rank: 6Rank: 6

积分
1456
QQ
发表于 2014-7-25 11:43:40 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
请问action里面如何调用数据库里写好的function,并且获取到返回值呢?
我尝试用调用procedure的方法,结果报错了。。
public static String queryGDDMColor(String str_gddm) throws NamingException, SQLException{
                String str_return="";
                Connection conn;
                conn = ModelUtils.getConnectionInTransaction("/production/trainSubsystem/tjCx/xchchl_shaohf/data");
               
                CallableStatement proc =null;
                proc = conn.prepareCall("{ call f_hch_get_gddm_color(?) }");
                //赋值参数
                proc.setString(1, str_gddm);
                proc.execute();
                return str_return;
        }

我真不相信起步论坛里有比我更帅的男人,信不信由你,反正我不信。

109

主题

1191

帖子

3851

积分

论坛元老

Rank: 8Rank: 8

积分
3851
QQ
发表于 2014-7-25 11:52:46 | 显示全部楼层
报什么错误,贴出来后台错误
回复 支持 反对

使用道具 举报

发表于 2014-7-25 12:34:26 | 显示全部楼层
调用方法没有错,请贴出详细错误
回复 支持 反对

使用道具 举报

212

主题

1033

帖子

1456

积分

金牌会员

Rank: 6Rank: 6

积分
1456
QQ
 楼主| 发表于 2014-7-25 14:34:34 | 显示全部楼层
MaHZ 发表于 2014-7-25 11:52
报什么错误,贴出来后台错误

2014-07-25 14:34:24 excute stream action, params:{executeContext=, action=queryGDDMColor, parameters={"str_gddm":"108"}, executor=1000000768, activity=mainActivity, process=/production/trainSubsystem/tjCx/xchchl_shaohf/process/xchchl_rzhzh/xchchl_rzhzhProcess, translateParameter=null, actionFlag=__action_0__}
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:592)
        at com.justep.system.action.Engine.invokeActions(Native Method)
        at com.justep.system.action.Engine.invokeActions(Unknown Source)
        at com.justep.business.server.BusinessServer.doAction(Unknown Source)
        at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00221: 'F_HCH_GET_GDDM_COLOR' is not a procedure or is undefined
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
        at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
        at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:212)
        at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:951)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1160)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
        at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
        at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4223)
        at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
        at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
        at Xchchl_shaohf.queryGDDMColor(Xchchl_shaohf.java:108)
        ... 26 more
我真不相信起步论坛里有比我更帅的男人,信不信由你,反正我不信。
回复 支持 反对

使用道具 举报

212

主题

1033

帖子

1456

积分

金牌会员

Rank: 6Rank: 6

积分
1456
QQ
 楼主| 发表于 2014-7-25 14:34:51 | 显示全部楼层
暗夜的忧伤 发表于 2014-7-25 12:34
调用方法没有错,请贴出详细错误

贴了。
我真不相信起步论坛里有比我更帅的男人,信不信由你,反正我不信。
回复 支持 反对

使用道具 举报

212

主题

1033

帖子

1456

积分

金牌会员

Rank: 6Rank: 6

积分
1456
QQ
 楼主| 发表于 2014-7-25 14:35:08 | 显示全部楼层
暗夜的忧伤 发表于 2014-7-25 12:34
调用方法没有错,请贴出详细错误

贴了。
我真不相信起步论坛里有比我更帅的男人,信不信由你,反正我不信。
回复 支持 反对

使用道具 举报

109

主题

1191

帖子

3851

积分

论坛元老

Rank: 8Rank: 8

积分
3851
QQ
发表于 2014-7-25 14:43:57 | 显示全部楼层
本帖最后由 MaHZ 于 2014-7-25 14:53 编辑
爱我刺鳌 发表于 2014-7-25 14:34
2014-07-25 14:34:24 excute stream action, params:{executeContext=, action=queryGDDMColor, paramete ...

提示很明显'F_HCH_GET_GDDM_COLOR' is not a procedure or is undefined
//如果在包里写的要加上包名
proc = conn.prepareCall("{ ?=call invokeSequence(?) }");
                        proc.registerOutParameter(1, java.sql.Types.INTEGER);
                       proc.setStringr(2,XXX);
                        proc.execute();
回复 支持 反对

使用道具 举报

212

主题

1033

帖子

1456

积分

金牌会员

Rank: 6Rank: 6

积分
1456
QQ
 楼主| 发表于 2014-7-25 14:50:50 | 显示全部楼层
MaHZ 发表于 2014-7-25 14:43
提示很明显'F_HCH_GET_GDDM_COLOR' is not a procedure or is undefined
//如果在包里写的要加上包名
pro ...

我调用的是函数,没有传出参数,所以不用 proc.registerOutParameter(1, java.sql.Types.INTEGER);吧?
我真不相信起步论坛里有比我更帅的男人,信不信由你,反正我不信。
回复 支持 反对

使用道具 举报

212

主题

1033

帖子

1456

积分

金牌会员

Rank: 6Rank: 6

积分
1456
QQ
 楼主| 发表于 2014-7-25 14:51:18 | 显示全部楼层
MaHZ 发表于 2014-7-25 14:43
提示很明显'F_HCH_GET_GDDM_COLOR' is not a procedure or is undefined
//如果在包里写的要加上包名
pro ...

也没再包里,就是一个函数而已。
我真不相信起步论坛里有比我更帅的男人,信不信由你,反正我不信。
回复 支持 反对

使用道具 举报

109

主题

1191

帖子

3851

积分

论坛元老

Rank: 8Rank: 8

积分
3851
QQ
发表于 2014-7-25 14:59:16 | 显示全部楼层
爱我刺鳌 发表于 2014-7-25 14:50
我调用的是函数,没有传出参数,所以不用 proc.registerOutParameter(1, java.sql.Types.INTEGER);吧? ...

oracle函数没有返回值?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-18 14:50 , Processed in 0.109813 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表