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

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

2012-02-21 
jsp中调用存储过程的指针参数jsp中调用存储过程的指针参数,怎么调用啊,我的老是出现java.sql.SQLException

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);

热点排行