我的oracle存储过程是修改emp表中的员工基本工资,存储过程可以确定没有错误,但用java调用就出现错误,源代码如下:
//演示java程序去调用oracle的存储过程案例
package T;
import java.sql.*;
public class Testoral { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
//加载oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("安全1");
//得到连接
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:test","scott","admin");
System.out.println("安全2");
//创建CallableStatement
CallableStatement cs=ct.prepareCall("(call s(?,?))");
//给问号赋值
cs.setString(1,"SMITH");
cs.setInt(2,10);
//执行
cs.execute();
//关闭
cs.close();
ct.close();
}catch(Exception e){
e.printStackTrace();
}}
}出现错误提示如下:
java.sql.SQLException: ORA-00928: missing SELECT keyword at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:304)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:271)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:622)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:179)
at oracle.jdbc.driver.T4CCallableStatement.execute_for_rows(T4CCallableStatement.java:782)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1027)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2887)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:2978)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4102)
at T.Testoral.main(Testoral.java:29)
请高人给予指点.
//演示java程序去调用oracle的存储过程案例
package T;
import java.sql.*;
public class Testoral { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
//加载oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("安全1");
//得到连接
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:test","scott","admin");
System.out.println("安全2");
//创建CallableStatement
CallableStatement cs=ct.prepareCall("(call s(?,?))");
//给问号赋值
cs.setString(1,"SMITH");
cs.setInt(2,10);
//执行
cs.execute();
//关闭
cs.close();
ct.close();
}catch(Exception e){
e.printStackTrace();
}}
}出现错误提示如下:
java.sql.SQLException: ORA-00928: missing SELECT keyword at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:304)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:271)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:622)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:179)
at oracle.jdbc.driver.T4CCallableStatement.execute_for_rows(T4CCallableStatement.java:782)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1027)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2887)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:2978)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4102)
at T.Testoral.main(Testoral.java:29)
请高人给予指点.
双引号里的内容是{}花括号,而不是小括号。