我的orcale代码是这样的  create or replace procedure sp_pro7
  (spBookID in number,spkookName in varchar2, sppublish in varchar2) is
  begin
    insert into book values(spBookID,spkookName,sppublish);
  end;
在oracle中运行时没有错误的,java连接oracle的步骤也没有错,但是运行java程序时提示ORA-00928: missing SELECT keyword
我在oracle中写了好几个这样的过程,在oracle中运行都没有错误,但是一到java运行时就提示ORA-00928: missing SELECT keyword这个错误,怎么回事

解决方案 »

  1.   

    在JAVA中执行存储过程要调用CallableStatement的execute方法,而不是调用executeQuery()方法。
      

  2.   

    oracle上你的执行是没错的,但可能你的java调用出问题了。下面是我写的一个简单调用:
    package com.sp;
    import java.sql.*;
    public class TestOraclePro { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    try{
                // 1、加载驱动 
        Class.forName("oracle.jdbc.OracleDriver");
                // 2、得到连接
                Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","scott","tiger");
                // 3.CallableStatement
                CallableStatement cs=ct.prepareCall("{call sp_think(?,?)}");
                // 4.给?赋值
                cs.setString(1,"SMITH");
                cs.setInt(2,100);
                //5.执行
                cs.execute();
                //6.关闭
                cs.close();
                ct.close();}catch(Exception e){ e.printStackTrace();}
    }}你参考一下哈。