存储过程实例和函数的区别

Oracle中存储过程和函数的区别
中存储过程和函数的区别
&存储过程和函数: & &
& & 例子:
//创建过程 &
& & create or replace procedure add_emailinfo(namee email_info.fullname%type ,address email_info.email_address%type ) &
& & begin &
& & insert into email_info(fullname,email_address) values (namee,address); &
& & end; &
& & //调用过程 &
& & call add_emailinfo('cherry','asdfsdf'); &
&///////////////////////////////////////////////////////////////////////////////////// &
& & //创建函数 &
& & create or replace function &sel_emailinfo(namee email_info.fullname%type ) &
& & return varchar2 is &
& & address varchar2(30); &
& & begin &
& & select email_address into address from email_info &
& & where trim(fullname)=trim(namee); &
& & return address; &
& & end ; &
& & //调用函数 &
& & select sel_emailinfo('bbb') from dual; &java中调用存储过程或函数 - SeeSay - ITeye技术网站
博客分类:
1.调用函数
CallableStatement cs=con.prepareCall("{?=call get_pname(?,?,?)}");
第一个?表示返回的值,后面的?可以是输入参数,也可以是输出参数。
第一个?是返回参数,所以必须有语句:
connection.registerOutParameter(1, Types.VARCHAR);(Types.varchar是类型)
后面的?如果是输出参数,应该也加上registerOutParameter语句:
connection.registerOutParameter(2, Types.VARCHAR);(2是第2个占位符,Types.varchar是类型)
最后打印输出的结果:
System.out.println(cs.getString(1)); (1是对应输出参数,第一个输出参数)
2.调用存储过程
CallableStatement cs=con.prepareCall("{call stu_pro(?,?,?)}");(与函数的区别是:没有?=)
java程序中要打印调用过程获得的值,需调用有输出参数的存储过程,用法和调用函数一样。
3.简单例子
package com.dgy.
import java.sql.CallableS
import java.sql.C
import java.sql.DriverM
import java.sql.SQLE
import java.sql.T
public class OraclePro {
* 连接数据库
public static Connection getConnection(){
Connection con =
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@PC-:1521:dgy";
String user = "dwj";
String pwd = "dwj";
con = DriverManager.getConnection(url,user,pwd);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
public static void main(String[] args) throws SQLException {
//System.out.println(OraclePro.getConnection());
Connection con=OraclePro.getConnection();
CallableStatement cs=con.prepareCall("{?=call get_pname}");//没有参数的函数
cs.registerOutParameter(1, Types.VARCHAR);//第一个占位为输出,类型是varchar
cs.execute();
//不能忘记execute()
System.out.println(cs.getString(1)); //打印输出结果,对应registerOutParameter
//有1个输入参数的函数
CallableStatement cs=con.prepareCall("{?=call get_pname1(?)}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.setLong(2,25);
//输入参数是25
cs.execute();
//有1个输出参数的函数
CallableStatement cs=con.prepareCall("{?=call get_pname2(?)}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.registerOutParameter(2, Types.VARCHAR);
cs.execute();
System.out.println(cs.getString(1));
System.out.println(cs.getString(2));
//上面两个结果一样,因为两个意思是一样的
//1个输入参数,1个输出参数
CallableStatement cs=con.prepareCall("{?=call get_pname3(?,?)}");
//第1个是返回值,第2个是输入参数,第3个是输出参数
cs.registerOutParameter(1, Types.VARCHAR);
cs.setLong(2, 25);
cs.registerOutParameter(3, Types.VARCHAR);
cs.execute();
System.out.println(cs.getString(1));
System.out.println(cs.getString(3));
调用存储过程与调用函数的方法一样,就只是con.prepareCall("{call
procedure(?,?)}")没有?=。
浏览: 19911 次
来自: 武汉
引用[u][/u][img][/img][url][/url] ...函数存储过程触发器补充作业3,zabbix 触发器函数,触发器调用存储过程,存储过程和触..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
函数存储过程触发器补充作业3
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 procedure 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信