猿问
下载APP

请问关于procedure和function的区别?

procedure和function的区别


慕仰8121524
浏览 68回答 4
4回答

慕尼黑的夜晚无繁华

2、函数调用在一个表达式中,过程则是作为pl/sql程序的一个语句过程和函数都以编译后的形式存放在数据库中,函数可以没有参数也可以有多个参数并有一个返回值。过程有零个或多个参数,没有返回值。函数和过程都可以通过参数列表接收或返回零个或多个值,函数和过程的主要区别不在于返回值,而在于他们的调用方式,过程是作为一个独立执行语句调用的,函数以合法的表达式的方式调用create or replace function func(v_name in varchar2)return varchar2isbeginreturn(v_name||' hello');end;调用:declarev_name varchar2(20);beginv_name:=func('cheng');dbms_output.put_line(v_name);end;带out参数的函数create or replace function func(v_name in varchar2,v_content out varchar2)return varchar2isbeginv_content:=v_name||' hello';return v_content;end;调用:declarev_name varchar2(20);v_name1 varchar2(20);beginv_name1:=func('susu',v_name);--返回v_name值dbms_output.put_line(v_name1);--打印func结果dbms_output.put_line(v_name);--打印v_name结果end;带in out 参数的函数create or replace function func(v_name in out varchar2)return varchar2isbeginv_name:=v_name||' hello';return 'cheng';end;调用:declarev_inout varchar2(20):='world';v_ret varchar2(20);beginv_ret:=func(v_inout);--返回调用v_inout值(作为出参)dbms_output.put_line(v_ret);--打印func结果dbms_output.put_line(v_inout);--返回v_name结果end; 

BIG阳

procedure 就是纯运行的过程(可以不命名),function则是函数,是有值的,有时可以直接输出procedure多用于深搜,function多用于递归,比较(以下都是正确打法):①procedure;②procedure dfs(x:longint);//(此处dfs只能调用,不能以ans:=dfs(x)或writeln(dfs(x))的形式出现)③function a:(x:boolean):longint;//(此处a被赋为longint,可以直接输出或作为longint使用,如ans:=a(x),当然,每次都会重新算一遍,boolean则是变量x'的定义,如果a被赋为boolean,是不可以输出的,但同样能作为boolean使用)

慕田峪9158850

其实 过程-procedure 和 函数-function本质差不多楼上说的返回值, 其实两种方法都有, function是直接返回, 而procedure是间接返回比如我定义一个函数 function add(a, b: Integer): Integer; //最后的Integer就是返回值在函数里面有专门的Result 来传递这个返回值而procedure没有直接返回值, 如果想要procedure返回某个数值可以在过程里面定义变量, 然后借助这个变量来返回数值楼主你问到怎么从输出我举个例子, 就举加法的例子function add1(a, b: Integer): Integer;begin Result := a + b;end; procedure add2(a, b: Integer);var Res: Integer;begin Res := a + b; Writeln(Res);end; 调用的时候看清楚了我先调用函数形式的var a, b: Integer;begin Readln(a, b); Writeln(IntToStr(add1(a, b))); //这个直接调用函数, 直接返回 Readln;end. 这个是过程的var a, b, Res: Integer;begin Readln(a, b); add2(a, b); //函数里面间接输出了, 并不需要在主程序里面再次输出了 Readln;end.

大话西游666

package 是包 和JAVA包一个概念 分包头和包体 包头中创建procedure(存储过程)包体中将存储过程实现 存储过程就是你预先定义好的一些数据操作语句 function是函数是对数据库中一些数据的处理 和JAVA中的方法有点像
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答