delimiter // CREATE PROCEDURE empNamePrc(IN cmpId VARCHAR(20), OUT empName VARCHAR(50)) BEGIN SELECT emp_name INTO empName FROM blemployee WHERE cmp_id = cmpId limit 0,1; END// delimiter ; |
delimiter // CREATE PROCEDURE findEmpNamePrc(IN cmpId VARCHAR(20), IN cmpCd VARCHAR(20), IN empId VARCHAR(20), OUT empName VARCHAR(50)) BEGIN SELECT emp_name INTO empName FROM blemployee WHERE cmp_id = cmpId and cmp_code=cmpCd and emp_id=empId; END// delimiter ; |
@Repository public interface BLEmployeeRepository extends CrudRepository<BLEmployee, BLEmployeeId> { @Procedure(name = "empNamePrc") public String empNamePrc(String cmpId); @Procedure(name = "findName", procedureName="findEmpNamePrc") public String findEmpName(String cmpId, String cmpCd, String empId); @Procedure(name="forTest", procedureName="findEmpNamePrc" , outputParameterName="empName") public String findNameWithParam(@Param("cmpId") String cmpId, @Param("cmpCd")String cmpCd, @Param("empId")String empId) ; } |
不知道是低版本还是oracle的原因。使用MySql时,不加@Param也好用,但是在低版本下,不加@Param,则Oracle会报出
PLS-00306: wrong number or types of arguments in call to '....' ORA-06550: line 1, column 7: PL/SQL: Statement ignored |