1樓:匿名使用者
mysql教程4 mysql8運算子、函式、儲存過程及新增資料型別 19.mysql之儲存過程與自定義函式的區別 學習猿地
2樓:冰山香雪
過程是編制程式時定義的乙個語句序列,用來完成某種指定的操作。過程說明是由過程首和分程式(說明部分和過程體)組成,過程定義如下:
過程定義:
procedure 過程識別符號 形式參數列;分程式;
過程呼叫:
過程識別符號(實際參數列);(*若沒有引數,則一對圓括號間的內容(包括括號本身)可不要*)
例:program proconcept(output);
type st=string[12];
var s:st;
procedure p(s1:st);
begin
write(s1);
end;
begin
s:='welcome you!';
p(s);
end.
函式是子程式的另一種形式,也是編制程式時定義的乙個語句序列.與過程不同的是函式不以實現某種操作為目的,而僅是為了獲得乙個計算結果值.這個結果值最終是通過函式名返回給呼叫者的,因此函式名具有值的型別.
pascal語言規定乙個函式只能求出乙個簡單值,所以確切地說函式名的型別只能是簡單型別.函式的說明也是由函式首部和分程式(說明部分和函式體)組成,其定義語法如下:
函式定義:
function 函式識別符號 形式參數列:函式型別識別符號;分程式;
函式呼叫:
與標準函式的使用方法一樣,例:
program fucconcept(output);
var x:integer;
function f(m:integer):integer;
begin
f:=sqr(m)
end;
begin
x:=f(5);
writeln('x=',x)
end.
簡述儲存過程和函式在語法上的區別?
3樓:
就oracle而言:
引數而言,儲存過程可以定義多個傳入和傳出引數,但是函式可以多個傳入,但是只有乙個傳出,而且要用return
外部呼叫方式上有區別 exec 《過程名》 但是函式可以直接 select function() from dual;
下面的語法是拷貝過來的,供參考
儲存過程:
基本語法:
create procedure 《過程名》(《引數列表,無參時忽略》)
as|is
變數宣告、初始化
begin
業務處理、邏輯**
exception
異常捕獲、容錯處理
end 《過程名》;
引數:《引數名》 in|out|in out 《引數型別,無長度說明》 ,如:v_name varchar2
in:入參
out:出參
in out:出入參
注:as|is表示as或is
呼叫語法:
1)、exec 《過程名》;
2)、execute 《過程名》;
3)、在pl/sql語句塊中直接呼叫。
例:create or replace procedure up_wap(v_param1 in out varchar2,v_param2 in out varchar2)
isv_temp varchar2(20);
begin
dbms_output.put_line('交換前引數1:'||v_param1||' 引數2:'||v_param2);
v_temp:=v_param1;
v_param1:=v_param2;
v_param2:=v_temp;
dbms_output.put_line('交換後引數1:'||v_param1||' 引數2:'||v_param2);
exception
when others then dbms_output.put_line('there is a error when the procedure up_wap executing!');
end up_wap;
-- 呼叫儲存過程
declare
v_param1 varchar2(20):='param1';
v_param2 varchar2(20):='param2';
begin
up_wap(v_param1 => v_param1,v_param2 => v_param2);
end;
自定義函式(function)
基本語法:
create function 《函式名》(《引數列表,無參時忽略》)
return 《返回值型別,無長度說明》
as|is
變數宣告、初始化
begin
業務處理、邏輯**
return 《返回的值》;
exception
異常捕獲、容錯處理
end 《函式名》;
引數:in 入參
注:只有入參的型別。
在儲存過程和自定義函式中的引數的傳遞(入參和出參)不能使用%type或%rowtype匹配,不能使用空值null,但是儲存過程可以返回空值。
例:create function uf_select_name_by_id_test(v_id in number)
return varchar2
isv_name t_test.t_name%type;
begin
select t_name into v_name from t_test where t_id=v_id;
return v_name;
exception
when others then dbms_output.put_line('error');
end uf_select_name_by_id_test;
select uf_select_name_by_id_test(1) 姓名 from dual;-- select呼叫
declare --pl/sql語句塊呼叫
v_name varchar2(20);
begin
v_name:=uf_select_name_by_id_test(1);
dbms_output.put_line('name = '||v_name);
end;
儲存過程和函式的區別是什麼?
4樓:白凝冬所聰
儲存過程需要單獨執行;
函式可以隨處呼叫。
儲存過程是儲存起來的可以接受和返回使用者提供的引數的
transact-sql
語句的集合。
可以建立乙個過程供永久使用,或在乙個會話中臨時使用(區域性臨時過程),或在所有會話中臨時使用(全域性臨時過程)。
也可以建立在
microsoft®
sqlserver™
啟動時自動執行的儲存過程。
使用者定義函式,它是返回值的已儲存的
transact-sql
例程。使用者定義函式不能用於執行一組修改全域性資料庫狀態的操作。
與系統函式一樣,使用者定義函式可以從查詢中喚醒呼叫。也可以像儲存過程一樣,通過
execute
語句執行。
這個的解釋也很好。
5樓:聶允公冶山梅
不同點:
1、識別符號不同。函式的識別符號為function,過程為:procedure;
2、函式中有返回值,且必須返回,而過程沒有返回值;
3、過程無返回值型別,不能將結果直接賦值給變數。函式有返回值型別,呼叫時,除在select中,必須將返回值賦給變數;
4、函式可以在select語句中直接使用,而過程不能。
儲存過程和函式分別是什麼呢,有什麼區別
6樓:匿名使用者
儲存過程和函式都包含一段處理指令碼,兩者都有返回值,而主要區別也體現在返回值上。
儲存過程的返回值可以通過過程體內return + 乙個整數的形式中指過程,返回過程狀態;也可以通過返回引數(output)得到乙個返回值。
函式的返回結果就很多了,除了返回各種基本型別,還能返回table型別(內嵌錶值函式和多語錄錶值函式),暫時能想到的就這些了~
7樓:匿名使用者
mysql教程4 mysql8運算子、函式、儲存過程及新增資料型別 19.mysql之儲存過程與自定義函式的區別 學習猿地
儲存過程和函式的區別 10
8樓:匿名使用者
一、含義不同
1、儲存過程:儲存過程是 sql 語句和可選控制流語句的預編譯集合,以乙個名稱儲存並作為乙個單元處理。
2、函式:是由乙個或多個 sql 語句組成的子程式,可用於封裝**以便重新使用。 函式限制比較多,如不能用臨時表,只能用表變數等
二、使用條件不同
1、儲存過程:可以在單個儲存過程中執行一系列 sql 語句。而且可以從自己的儲存過程內引用其它儲存過程,這可以簡化一系列複雜語句。
2、函式:自定義函式諸多限制,有許多語句不能使用,許多功能不能實現。函式可以直接引用返回值,用表變數返回記錄集。但是,使用者定義函式不能用於執行一組修改全域性資料庫狀態的操作。
三、執行方式不同
1、儲存過程:儲存過程可以返回引數,如記錄集,函式只能返回值或者表物件。儲存過程的引數有in,out,inout三種,儲存過程宣告時不需要返回型別。
2、函式:函式引數只有in,而函式需要描述返回型別,且函式中必須包含乙個有效的return語句。
9樓:越答越離譜
1、定義不同
儲存過程:是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的乙個重要物件。
函式:返回型別 名字(形式引數表列)
2、分類不同
函式分為全域性函式、全域性靜態函式;在類中還可以定義建構函式、析構函式、拷貝建構函式、成員函式、友元函式、運算子過載函式、內聯函式等。
儲存過程分為系統儲存過程、本地儲存過程、臨時儲存過程、遠端儲存過程、擴充套件儲存過程。
3、功能不同
函式:乙個較大的程式一般應分為若干個程式塊,每乙個模組用來實現乙個特定的功能。所有的高階語言中都有子程式這個概念,用子程式實現模組的功能。
在c語言中,子程式的作用是由乙個主函式和若干個函式構成。由主函式呼叫其他函式,其他函式也可以互相呼叫。同乙個函式可以被乙個或多個函式呼叫任意多次。
儲存過程:這類語言主要提供以下功能,讓使用者可以設計出符合應用需求的程式:
(1)變數說明
(2)ansi(美國國家標準化組織)相容的sql命令(如select,update….)
(3)一般流程控制命令(if…else…、while….)
(4)內部函式
oracle儲存過程和函式的區別
例子 sql view plain copy print?建立過程 create or replace procedure add emailinfo namee email info.fullname type address email info.email address type isbeg...
簡述煤的形成過程,簡述煤的形成過程
雯 是千百萬年來植物的枝葉和根莖,在地面上堆積而成的一層極厚的黑色的腐植質,由於地殼的變動不斷地埋入地下,長期與空氣隔絕,並在高溫高壓下,經過一系列複雜的物理化學變化等因素,形成的黑色可燃沉積岩,這就是煤炭的形成過程 煤是植物遺體經過生物化學作用和物理化學作用而轉變成的沉積有機礦產,是多種高分子化合...
簡述精子發生的過程,簡述精子形成的過程。
罕頌力晴畫 相同 都發生兩次 都有dna複製。不同 精子發生過程中,細胞質是均等 最終一個精原細胞可以形成四個精細胞,精細胞還要變形成熟才為精子 而卵子形成過程中細胞質不均等 第一極體形成第二極體是均等 一個卵原細胞最終形成一個卷子,其他三個極體退化。簡述精子形成的過程。 庚若雲奉朝 a型精原細胞 ...