读书人

jsp中调用存储过程的指针参数,该怎么解

发布时间: 2012-02-21 16:26:23 作者: rapoo

jsp中调用存储过程的指针参数
jsp中调用存储过程的指针参数,怎么调用啊,


我的老是出现java.sql.SQLException: 不支持的特性
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
oracle.jdbc.dbaccess.DBError.throwUnsupportedFeatureSqlException(DBError.java:689)
oracle.jdbc.driver.OracleCallableStatement.setInt(OracleCallableStatement.java:1238)
org.apache.tomcat.dbcp.dbcp.DelegatingCallableStatement.setInt(DelegatingCallableStatement.java:206)
org.apache.jsp.PatrolMan.GrantAndMend_005fList_jsp._jspService(org.apache.jsp.PatrolMan.GrantAndMend_005fList_jsp:260)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
filters.CheckLoginTimoutFilter.doFilter(CheckLoginTimoutFilter.java:57)
filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
大大救命啊我是这样调用的
Connection conn=myDB.getConnection();
ResultSet rs= null;
CallableStatement proc = null;
//oracle.jdbc.OracleCallableStatement proc=null;
//proc = (oracle.jdbc.OracleCallableStatement)conn.prepareCall( "{ call P_Pagination(?,?,?,?,?,?) } ");
proc = conn.prepareCall( "{ call super.P_Pagination(?,?,?,?,?,?) } ");

proc.setInt( "Pindex ", iPageNo);
proc.setInt( "Psize ",iPageSize);
proc.setString( "Psql ", sql);
proc.registerOutParameter( "Pcount ", oracle.jdbc.OracleTypes.INTEGER);
proc.registerOutParameter( "Prcount ",oracle.jdbc.OracleTypes.INTEGER);
proc.registerOutParameter( "v_cur ",oracle.jdbc.OracleTypes.CURSOR);
proc.execute();

rs=(ResultSet)proc.getObject( "6 ");

iRecordCount=proc.getInt( "Prcount ");
iPageCount=proc.getInt( "Pcount ");
rs.next();


[解决办法]
package com.hyq.src;

import java.sql.*;

import java.io.OutputStream;

import java.io.Writer;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import oracle.jdbc.driver.*;


public class TestProcedureTHREE {

public TestProcedureTHREE() {

}

public static void main(String[] args ){

String driver = "oracle.jdbc.driver.OracleDriver ";

String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq ";

Statement stmt = null;

ResultSet rs = null;

Connection conn = null;


try {

Class.forName(driver);

conn = DriverManager.getConnection(strUrl, "hyq ", "hyq ");


CallableStatement proc = null;

proc = conn.prepareCall( "{ call hyq.testc(?) } ");

proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);

proc.execute();

rs = (ResultSet)proc.getObject(1);


while(rs.next())

{

System.out.println( " <tr> <td> " + rs.getString(1) + " </td> <td> "+rs.getString(2)+ " </td> </tr> ");

}

}

catch (SQLException ex2) {

ex2.printStackTrace();

}

catch (Exception ex2) {

ex2.printStackTrace();

}

finally{

try {

if(rs != null){

rs.close();

if(stmt!=null){

stmt.close();

}

if(conn!=null){

conn.close();

}

}

}

catch (SQLException ex1) {

}

}

}

}


[解决办法]
proc.setInt(1, iPageNo);
proc.setInt(2, iPageSize);
proc.setString(3, sql);
proc.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
proc.registerOutParameter(5,oracle.jdbc.OracleTypes.INTEGER);
proc.registerOutParameter(6,oracle.jdbc.OracleTypes.CURSOR);

读书人网 >Java Web开发

热点推荐