1 mysql
在操作子程式時,由於需要使用分號";",所以要使用delimiter先重新定義分界符為//。以下/**/包含的內容表示注釋
delimiter // /*使用delimiter // 把定界符由「;」設定為「//」 。 注意「delimiter」和「//」之間的空格。*/
/* 1 建立子程式(儲存過程和儲存函式的統稱)*/
create procedure p1( out cnt int)
begin
select count(*) into cnrfrom baseinfo_tbl;
end// /* 提交以上語句 */
create function f1( s char(20)) returns char(50)
begin
return concat('hello, ',s,'!');
end // /* 提交以上語句 */
delimiter ; /* 把定界符重新設定為 「;」 「delimiter」和「;」之間的空格*/
/* 2 呼叫子程式*/
select f1('world'); /* 呼叫函式*/
call p1(@a); /* 呼叫儲存過程*/
select @a;
3 顯示指定子程式的結構
show create function f1;
show create procedure p1;
4 顯示所有的子程式
show function status;
show procedure status;
注:關於引數的in,out,inout。in表示僅作為輸入,out表示僅作為輸出,inout表示作為輸入和輸出。
一般的儲存過程的引數預設是in方式。儲存函式只能使用in方式。
2 sqlserver
(1)建立儲存過程
--本過程使用了pubs資料庫,所以開頭要加如下語句
use pubs
gocreate procedure get_sales_for_title
@title varchar(80) = null, --this is the input paramater.
@ytd_sales int output
asif @title is null
begin
print 'error: your must specify a title value.'
return
end-- get the sales for the specified title
select "ytd_sales" = ytd_sales
from titles
where title = @title
set @ytd_sales = @@rowcount
return
go--呼叫儲存過程
declare @ytd int
execute get_sales_for_title @title='sushi, anyone?', @ytd_sales = @ytd output
select @ytd as ytd
顯示結果
ytd_sales
ytd
儲存過程和儲存函式
儲存過程 stored procedure 是一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫。中使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它 優點 1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而 一般sql 語句每執行一次就編譯一次,...
Oracle儲存過程和儲存函式
參看 oracle儲存過程 儲存函式 說明 儲存過程 儲存函式都是物件。包括表 檢視 索引 序列 同義詞等也是物件。概念 指儲存在資料庫中供所有使用者程式呼叫的子程式叫儲存 過程 儲存函式。特點 完成特定功能的程式。區別 儲存函式可以通過return子句返回乙個值。建立和使用儲存過程 用create...
MySQL儲存過程和儲存函式
儲存過程和儲存函式 mysql的儲存過程 stored procedure 和函式 stored function 統稱為stored routines。1.儲存過程和函式的區別 函式只能通過return語句返回單個值或者表物件。而儲存過程不允許執行return,但是通過out引數返回多個值。函式是...