create or replace function xxc_fun1(myName varchar2)return 
number is yearSal number(7,2);    -- 表示返回一个number类型的  变量名为yearSal(共7位,并包含两位小数)
begin
--执行部分
select sal*12+nvl(comm,0)*12 into yearSal from emp where ename=myName;
return yearSal;
end;package com.xxc.plsqltest;import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;/**
 *测试java程序调用oracle的存储过程
 */
public class TestOracleFunction {
private static String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL";
private static String username = "scott"; 
private static String password = "123";
public static void main(String[] args) {
try {
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.得到连接
Connection conn = DriverManager.getConnection(url,username,password);
//3.创建CallableStatement
CallableStatement cs = conn.prepareCall("{? = call xxc_fun1}");
//给?赋值
cs.registerOutParameter(1, oracle.jdbc.OracleTypes.NUMBER);
//4.执行
cs.execute();
int sal = cs.getInt(1);
System.out.println(sal);
//5.关闭资源
cs.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}异常如下java.sql.SQLException: ORA-06550: line 1, column 13:
PLS-00306: wrong number or types of arguments in call to 'XXC_FUN1'
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 com.xxc.plsqltest.TestOracleFunction.main(TestOracleFunction.java:27)小弟不知道这么调用函数是否正确,那个返回值double integer NUMERIC  也试过都是报同样的异常