PL/SQL函数
后天就要踏上广州的征程了。今晚就献上FUNCTION
在Oracle中函数与存储过程非常相似。
存储过程:输入参数,输出参数,或者二者皆可的参数,没有返回值
函数:输入参数,有返回值
函数的一般的格式:
CREATE OR REPLACE FUNCTUION funcion_name [参数表列] RETURN DATATYPE IS|AS PL/SQL BLOCK
举例应用:
CREATE OR REPLACE FUNCTION get_age(per_id in person_id) return number is v_age person.id%type :=0; begin select age into V_age from person where id=per_id; return v_age; end get_age; /
在java代码里去调用函数:
CallableStatementcs;
try{
//调用一个没有参数的函数;函数返回aint
//预处理callable语句
cs = connection.prepareCall("{? = call get_age}"); // 注册返回值类型 cs.registerOutParameter(1, i); // Execute and retrieve the returned value cs.execute(); int retValue = cs.getInt(1);
//调用有一个in参数的函数;thefunctionreturnsanumber
cs = connection.prepareCall("{? = call get_age(?)}"); // Register the type of the return value cs.registerOutParameter(1, Types.number); // Set the value for the IN parameter cs.setInt(2, 95001); // Execute and retrieve the returned value cs.execute(); retValue = cs.getInt(1);
//调用有一个out参数的函数;thefunctionreturnsaVARCHAR
cs=connection.prepareCall("{?=callget_age(?)}");
//RegisterthetypesofthereturnvalueandOUTparameter
cs.registerOutParameter(1,Types.VARCHAR);
cs.registerOutParameter(2,Types.VARCHAR);
//Executeandretrievethereturnedvalues
cs.execute();
retValue=cs.getString(1); //returnvalue
StringoutParam=cs.getString(2); //OUTparameter
//调用有一个in/out参数的函数;thefunctionreturnsaVARCHAR
cs = connection.prepareCall("{? = call get_age(?)}"); // Register the types of the return value and OUT parameter cs.registerOutParameter(1, Types.NUMBER); cs.registerOutParameter(2, Types.NUMBER);
//SetthevaluefortheIN/OUTparameter
cs.setInt(2, 95002); // Execute and retrieve the returned values cs.execute(); retValue = cs.getInt(1); // return value outParam = cs.getInt(2); // IN/OUT parameter } catch (SQLException e) { }
相关推荐
zycchun 2020-10-16
ItBJLan 2020-06-16
89407707 2020-06-10
goodriver 2020-06-09
ItBJLan 2020-06-07
lt云飞扬gt 2020-05-31
旗木卡卡西 2020-05-27
krzover 2020-03-17
zycchun 2020-03-15
tanrong 2020-04-20
徐悦TechBlog 2020-04-15
dreamhua 2020-02-21
liuyang000 2020-01-24
liuyang000 2019-12-30
明月清风精进不止 2020-01-01