过程和函数
过程
--创建一个过程 create or replace procedure AddNewCountry( --%type意思指这里的字段和表里面对应的字段类型一致 c_Id countries.country_id%type, v_Name countries.country_name%type, v_Remark countries.country_remark%type) as begin --在countries表中插入新记录 insert into countries(country_id,country_name,country_remark) values (c_Id,v_Name,v_Remark); end AddNewCountry;
--使用创建的过程 begin AddNewCountry('123','China','世界第一大国中国'); end;
--创建过程的另外一个写法 create or replace procedure AddNewCountry as begin --在countries表中插入新记录 insert into countries(country_id,country_name,country_remark) values (c_Id,v_Name,v_Remark); dbms_output.put_line('The Record Has Insert!'); end AddNewCountry; create or replace procedure GetDate as begin DBMS_OUTPUT.put_line('The Date is:'||TO_CHAR(SYSDATE,'DD-MM-YYYY')); END GetDate;
--使用该过程 begin AddNewCountry; GetDate; end; |
函数
声明传参函数
--创建一个函数 create or replace function countryNumber( n_maxNumber NUMBER, n_minNumber NUMBER) RETURN varchar2 IS n_Result NUMBER(5); v_ReturnValue varchar2(50); begin --从country表中选择记录的数量 select count (*) into n_Result from country; if n_Result > n_maxNumber then v_ReturnValue:='The Number Too Big!'; elsif n_Result < n_minNumber then v_ReturnValue:='The Number Too Little'; else v_ReturnValue:='Maybe right!'; end if; return v_ReturnValue; end countryNumber;
--执行上面的函数 declare v_maxNumber Number:=10000; v_minNumber Number:=10; v_Result varchar2(50); begin v_Result:=countryNumber(v_maxNumber,v_minNumber); DBMS_OUTPUT.put_line(v_Result); end; |
带默认值函数
--创建一个函数 create or replace function countryNumber( n_maxNumber NUMBER default 1000, n_minNumber NUMBER default 10) RETURN varchar2 IS n_Result NUMBER(5); v_ReturnValue varchar2(50); begin --从country表中选择记录的数量 select count (*) into n_Result from country; if n_Result > n_maxNumber then v_ReturnValue:='The Number Too Big!'; elsif n_Result < n_minNumber then v_ReturnValue:='The Number Too Little'; else v_ReturnValue:='Maybe right!'; end if; return v_ReturnValue; end countryNumber;
--执行上面的函数 declare v_Result varchar2(50); begin v_Result:=countryNumber(v_maxNumber,v_minNumber); DBMS_OUTPUT.put_line(v_Result); end; |