首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

各位大侠帮帮忙吧(java调oracle函数有关问题)

2012-02-07 
各位大侠帮帮忙吧(java调oracle函数问题)CREATEORREPLACEPACKAGEMY_STEEL_SOFTAS--存储过程返回数据集的类

各位大侠帮帮忙吧(java调oracle函数问题)
CREATE   OR   REPLACE   PACKAGE   MY_STEEL_SOFT
AS
    --存储过程返回数据集的类型
    TYPE   ReturnDataSet   IS   REF   CURSOR;

END   MY_STEEL_SOFT;

--函数
create   or   replace   function   bb(beginDate   in   varchar2)
    return   My_steel_soft.ReturnDataSet
as
    ACursor   My_steel_soft.ReturnDataSet;
begin
    open   ACursor   for   select   *   from   v_out_orderqry   t
                    where   t.dOrderDate> =beginDate;
                                --and   t.dOrderDate <   endDate;
                                --and   t.sSalerGUID=orgguid
                                --or   t.sBuyGUID=orgguid;
    return   ACursor;
end;


/**
  *   TestFun.java
  *   create   on   2007-5-23
  *   Copyright   2010   MySteelSoft   All   Rights   Reserved.
  */
package   com.test;

import   java.sql.CallableStatement;
import   java.sql.Connection;
import   java.sql.DriverManager;
import   java.sql.ResultSet;
import   java.sql.SQLException;
public   class   TestFun{

public   static   void   main(String[]   args)
{
        Connection   connection   =   null;
try{  
Class.forName( "oracle.jdbc.driver.OracleDriver ");  
}  
catch(ClassNotFoundException   e)   {  
System.out.println( "数据库驱动类没找到 ");
}
try{
String   serverName   =   "192.168.18.21 ";
String   portNumber   =   "1521 ";
String   sid   =   "eTrade ";
String   url   =   "jdbc:oracle:thin:@ "   +   serverName   +   ": "   +   portNumber   +   ": "   +   sid;
String   username   =   "developer ";
String   password   =   "mysteelsoft ";
connection   =   DriverManager.getConnection(url,username,password);
CallableStatement   cstmt;

cstmt   =   connection.prepareCall( "{?   =   call   bb(?)} ");
cstmt.setString(2, "2006-12-12 ");
cstmt.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
ResultSet   rest   =   cstmt.executeQuery();
while(rest.next()){
System.out.println( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!::: "+rest.getString( "SGUID "));
}
}catch(SQLException   e)   {
e.printStackTrace();    
}
}
}


执行后出现以下错误!!

java.sql.SQLException:   ORA-00900:   无效   SQL   语句

at   oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
at   oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
at   oracle.jdbc.ttc7.v8Odscrarr.receive(v8Odscrarr.java:192)
at   oracle.jdbc.ttc7.TTC7Protocol.describe(TTC7Protocol.java:592)


at   oracle.jdbc.driver.OracleStatement.describe(OracleStatement.java:5496)
at   oracle.jdbc.driver.OracleStatement.get_column_index(OracleStatement.java:5266)
at   oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:698)
at   oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1505)
at   com.test.TestFun.main(TestFun.java:45)


各位大侠帮忙看看吧!

[解决办法]
我的异常网推荐解决方案:oracle存储过程,http://www.myexception.cn/oracle-develop/177537.html
[解决办法]
是getString报得错,那应该结果已经回来了 试试把rest.getMetaData() 取出来并打印出来看看
[解决办法]
存储过程是好的吗?
[解决办法]
语句有问题把,是不是传入的参数类型不匹配
[解决办法]
无效 SQL 语句 問題顯示了阿 你的語句直接在oracle裏能用嗎

热点排行