//演示java程序去调用oracle的存储过程package uncle.crazy;
import java.sql.*;
public class TestOracePro { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.得到连接
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:MLDN","scott","tiger");
//3.创建CallableStatement
CallableStatement cs=ct.prepareCall("{call sp_pr4(?,?)}");
//4.给?赋值
cs.setString(1,"SMITH");
cs.setInt(2,10);
//5.执行
cs.execute();
//关闭
cs.close();
ct.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
}
注明:已经在plsql中建立了存储过程sp_pr4
import java.sql.*;
public class TestOracePro { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.得到连接
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:MLDN","scott","tiger");
//3.创建CallableStatement
CallableStatement cs=ct.prepareCall("{call sp_pr4(?,?)}");
//4.给?赋值
cs.setString(1,"SMITH");
cs.setInt(2,10);
//5.执行
cs.execute();
//关闭
cs.close();
ct.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
}
注明:已经在plsql中建立了存储过程sp_pr4
解决方案 »
- Oracle中怎么用触发器实现一个表中不能存在两个PRESIDENT职业
- oracle 里面能否实现如sqlserver中在查询的时候加一个自增列
- illegal lob length marker 54485 IMP-00098: INTERNAL ERROR: impgst2
- 请问,在Oracle10g里,有不支持的SQL文吗?急!!
- 如何实现oracle数据库与access数据库的实时通信?
- 首选证明问题
- 怎么样对树形结构内部的层次进行排序?
- 对面的高手看过来,很菜的问题!
- 为何我的sql load不能用?
- [求助] Configuration Assisant 进行到50%时出现错误
- 数据库连接对象Connection的强制转换
- 要支持oracle mssql mysql db2等多个数据库,大家是怎么维护脚本的啊?
java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00201: identifier 'SP_PR4' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored 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 uncle.crazy.TestOracePro.main(TestOracePro.java:23)
PLS-00201: identifier 'SP_PR4' must be declared
ORA-06550: line 1, column 7:已经很明显的错误了!你的SP_PR4这个存储过程编译有错误!
create or replace procedure sp_pr4(spName varchar2,newsal number) is
begin
--执行部分,根据用户名去修改工资
update scott.emp set sal=newSal where ename=spName;
end;
/
PLS-00201: identifier 'SP_PR4' must be declared
ORA-06550: line 1, column 7:"127.0.0.1:1521:MLDN","scott","tiger"
上面的代码清晰无误的表达了:
在本机的MLDN数据库的SCOTT用户下不存在通过编译且名为SP_PR4的存储过程不要说什么“存储过程经过编译了也没有错误”,程序不会谎报军情,调错只看程序。