儲存過程和儲存函式

2021-07-09 09:01:07 字數 1647 閱讀 6453

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引數返回多個值。函式是...