你需要在数据库中写GETEMP的储存过程,并定义GETEMP

解决方案 »

  1.   

    呵呵,要得到oracle的存储过程结果集没这么简单的,需要把PROCEDURE 装到package里,然后通过CURSOR来得到结果集
      

  2.   

    我的代码:create or replace package pkg
    is
    type cur is ref cursor;
    end;create or replace procedure getemp(strSql in String,cur out pkg.cur)
    is
     begin
         open cur for strSql;
     end;
    end;JSP代码:
    <%@ page contentType="text/html; charset=GBK" import="java.sql.*,javax.naming.*,javax.sql.*,oracle.jdbc.driver.*"%>
    <html>
    <head>
    <title>
    jsp1
    </title>
    </head>
    <body bgcolor="#ffffff">
    <h1>
    <%      try {
        Context initCtx = new InitialContext();
        DataSource ds = (DataSource) initCtx.lookup("jdbc/myoracle");
        Connection conn = ds.getConnection();
        CallableStatement stmt = conn.prepareCall("{call getEmp(?,?)}");
        stmt.setString(1,"select eid,ename from emp");
        stmt.registerOutParameter(2,OracleTypes.CURSOR);
        stmt.execute();
        ResultSet rs = stmt.getObject(1);
        while (rs.next()) {
          out.println(rs.getString(1) + "\t" + rs.getString(2) + "<br>");
        }
        rs.close();
        stmt.close();
        conn.close();
      }
      catch (Exception ex) {
        out.println(ex);
      }
    %>
    </h1>
    </body>
    </html>异常:java.sql.SQLException: ORA-06550: 第 1 行, 第 7 列: PLS-00201: 必须说明标识符 'GETEMP' ORA-06550: 第 1 行, 第 7 列: PL/SQL: Statement ignored
      

  3.   

    jsp的潜水者,还不是很精通,所以静观其变,快!大家顶啊 !!!!!!!!!!!
      

  4.   

    package不是那么写的。
    create or replace package pkg
    as
    type cur is ref cursor;procedure getemp(strSql in String,cur out pkg.cur);
    end;
      

  5.   

    create or replace package pkg
    is
    type cur is ref cursor;
    end;create or replace procedure getemp(strSql in String,cur out pkg.cur)
    is
     exec_str varchar2(32767);
     begin
         exec_str := strSql;
         open cur for exec_str;
     end;
    JSP代码:
    <%@ page contentType="text/html; charset=GBK" import="java.sql.*,javax.naming.*,javax.sql.*,oracle.jdbc.driver.*"%>
    <html>
    <head>
    <title>
    jsp1
    </title>
    </head>
    <body bgcolor="#ffffff">
    <h1>
    <%      try {
        Context initCtx = new InitialContext();
        DataSource ds = (DataSource) initCtx.lookup("jdbc/myoracle");
        Connection conn = ds.getConnection();
        CallableStatement stmt = conn.prepareCall("{call getEmp(?,?)}");
        stmt.setString(1,"select eid,ename from emp");
        stmt.registerOutParameter(2,OracleTypes.CURSOR);
        stmt.execute();
        ResultSet rs = (ResultSet)stmt.getObject(2);
        while (rs.next()) {
          out.println(rs.getString(1) + "\t" + rs.getString(2) + "<br/>");
        }
        rs.close();
        stmt.close();
        conn.close();
      }
      catch (Exception ex) {
        out.println(ex);
      }
    %>
    </h1>
    </body>
    </html>自己解决了!!