62,621
社区成员
发帖
与我相关
我的任务
分享
create or replace procedure query_student
is
v_name varchar2(20);
begin
select name into v_name from st_t_student where id=3012;
dbms_output.put_line(v_name);
end query_student;
public void test(){
conn = JDBCUtils.getConnection("miniWeb", "miniWeb");
try {
conn.setAutoCommit(false);
//调用存储过程
cstmt = conn.prepareCall("{call query_student}");
rs = cstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getString("v_name"));
}
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
JDBCUtils.closeConnection(rs, pstmt, conn);
}
}
java.sql.SQLException: ORA-00900: invalid SQL statement
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
at oracle.jdbc.driver.T4C8Odscrarr.receive(T4C8Odscrarr.java:203)
at oracle.jdbc.driver.T4CCallableStatement.do_describe(T4CCallableStatement.java:604)
at oracle.jdbc.driver.OracleStatement.get_column_index(OracleStatement.java:3037)
at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1861)
at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1559)
at com.sinosoft.javase.ProcedureTest.test(ProcedureTest.java:36)
at com.sinosoft.javase.ProcedureTest.main(ProcedureTest.java:53)
public void queryStudent(){
conn = JDBCUtils.getConnection("miniWeb", "miniWeb");
try {
conn.setAutoCommit(false);
//调用存储过程
cstmt = conn.prepareCall("{call query_student(?)}");
cstmt.registerOutParameter(1, Types.VARCHAR);
cstmt.execute();
System.out.println(cstmt.getString(1));
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
JDBCUtils.closeConnection(rs, cstmt, conn);
}
}
...
create or replace procedure p_query(v_name out varchar2)
...
CallableStatement cstmt = conn.prepareCall("{call p_query(?)}");
//cstmt.setInt(1,1);
cstmt.registerOutParameter(1, Types.VARCHAR);
cstmt.execute();
String name = cstmt.getString(1);
System.out.println(name);
create or replace package pa_query as
type p_cursor is ref cursor;
end pa_query;
/
create or replace procedure p_query(v_cursor out pa_query.p_cursor)
is
begin
open v_cursor for select * from emp;
end p_query;
package com.abing.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import oracle.jdbc.OracleTypes;
public class P_test {
public P_test() {
super();
}
public static void main(String[] args) throws ClassNotFoundException {
Connection conn=null;
ResultSet rs=null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott",
"tiger");
conn.setAutoCommit(false);
// 调用存储过程
CallableStatement cstmt = conn.prepareCall("{call p_query(?)}");
//cstmt.setInt(1,1);
cstmt.registerOutParameter(1, OracleTypes.CURSOR);
cstmt.execute();
rs = (ResultSet) cstmt.getObject(1);
while(rs.next()) {
String name = rs.getString("ename");
System.out.println(name);
}
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}}
create or replace procedure p_query(v_i in int,v_name out varchar2)
is
begin
select ename into v_name from emp where empno=7900 and 1=v_i;
end p_query;
package com.abing.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
public class P_test {
public P_test() {
super();
}
public static void main(String[] args) throws ClassNotFoundException {
Connection conn=null;
ResultSet rs=null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott",
"tiger");
conn.setAutoCommit(false);
// 调用存储过程
CallableStatement cstmt = conn.prepareCall("{call p_query(?,?)}");
cstmt.setInt(1,1);
cstmt.registerOutParameter(2, Types.VARCHAR);
cstmt.execute();
String name = cstmt.getString(2);
System.out.println(name);
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}}
public void queryStudent(){
conn = JDBCUtils.getConnection("miniWeb", "miniWeb");
try {
conn.setAutoCommit(false);
//调用存储过程
//Statement stmt = conn.createStatement();
//rs = stmt.executeQuery("{call query_student}");
cstmt = conn.prepareCall("{call query_student()}");
//cstmt.registerOutParameter(1, Types.VARCHAR);
cstmt.execute();
//System.out.println(cstmt.getString(1));
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
JDBCUtils.closeConnection(rs, cstmt, conn);
}
}
create or replace procedure query_student
is
v_name varchar2(20);
begin
select name into v_name from st_t_student where id=3012;
-- dbms_output.put_line(v_name); 这句不要呢
end query_student;
public void test(){
conn = JDBCUtils.getConnection("miniWeb", "miniWeb");
try {
conn.setAutoCommit(false);
//调用存储过程
//Statement stmt = conn.createStatement();
//rs = stmt.executeQuery("{call query_student}");
cstmt = conn.prepareCall("{call query_student()}");
cstmt.registerOutParameter(1, Types.VARCHAR);
cstmt.execute();
System.out.println(cstmt.getString(1));
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
JDBCUtils.closeConnection(rs, pstmt, conn);
}
}
/*
* file: TestProcedure.java
* class: TestProcedure
*
* description:
*
* @author: leisore
* @version: V1.0.0
*/
package cn.leisore.daily._2010_06_03;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class TestProcedure {
public TestProcedure() {
super();
}
public static void main(String[] args) throws ClassNotFoundException {
Connection conn=null;
ResultSet rs=null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@127.0.0.1:1521:leisore", "leisore",
"leisore");
conn.setAutoCommit(false);
// 调用存储过程
CallableStatement cstmt = conn.prepareCall("{call query_student}");
rs = cstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("v_name"));
}
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}