儲存過程和函式

2021-06-07 22:58:02 字數 1676 閱讀 4792

--儲存過程:sql語句和流程控制語句組成的預編譯的**塊

create proc 儲存過程名

@引數名 引數型別,

@引數名 引數型別

as儲存過程體

--呼叫

exec 儲存過程名 @值,@值

--範例:取款,

create proc sp_takemoney

@cardno varchar(19),

@money int

asdeclare @balance int

--判斷餘額是否足夠

select @balance=餘額字段 from 卡號資訊表 where 卡號=@cardno

if(@balance<@money)

select 0

else

begin

update 卡號資訊表 set 餘額字段=餘額欄位-@money

where 卡號=@cardno

select 1

end--函式(方法)

--分為:系統函式、自定義函式

/*特點:1、有返回值,所以根據返回值可以對自定義函式再次進行分類

分為:標量值函式:返回結果為乙個值,通常以sql基本資料型別返回

錶值函式:返回結果為多個值,通常以表的形式返回

2、函式返回的結果可以和其他sql語句結合執行

語法:create function 函式名(@引數 引數型別,@引數 引數型別)

returns 返回型別

asbegin

函式體end

呼叫:select dbo.函式名(值,值)--標量函式

select * from dbo.函式名(值,值) --錶值函式

--範例:

--標量函式(查詢與最高分的學生同班的學生)

--查詢最高分學生所在班級

create function getclassbymaxscore()

returns int

asbegin

declare @class int

select @class=class from scores where

score=(select max(score) from scores)

return @class

--return(select class from scores where score=(select max(score) from scores))

end--呼叫

select * from scores where class=dbo.getclassbymaxscore()

--錶值函式

create function getmaxclassby()

returns @t table(id int,name varchar(20),score int,class int)

asbegin

declare @class int

select @class=class from scores where score=(select max(score) from scores)

insert into @t select * from scores where class=@class

return

endselect * from dbo.getmaxclassby()

*/

儲存過程和儲存函式

1 mysql 在操作子程式時,由於需要使用分號 所以要使用delimiter先重新定義分界符為 以下 包含的內容表示注釋 delimiter 使用delimiter 把定界符由 設定為 注意 delimiter 和 之間的空格。1 建立子程式 儲存過程和儲存函式的統稱 create procedu...

儲存過程和儲存函式

儲存過程 stored procedure 是一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫。中使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它 優點 1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而 一般sql 語句每執行一次就編譯一次,...

儲存過程和函式

子程式 命名的pl sql塊 的各個部分 申明部分,可執行部分,異常部分 可選 子程式的分類 過程 執行某些操作 函式 執行操作並返回結果 過程引數的三種模式 in,out,in out 建立過程的語法 create or replace procedure param list is as beg...