SqlServer觸發器 儲存過程和函式

2021-08-27 09:50:51 字數 2667 閱讀 7899

---------------------

sqlserver-觸發器

-------------

觸發器中的臨時表:

inserted

存放進行insert和update 操作後的資料

deleted

存放進行delete 和update操作前的資料

--建立觸發器

create trigger user_onupdate

on st_user

for update

asdeclare @msg nvarchar(50)

--@msg記錄修改情況

select @msg = n '姓名從「' + deleted. name + n '」修改為「' + inserted. name + '」' from inserted,deleted

--插入日誌表

insert into [log](msg) values (@msg)

--刪除觸發器

drop trigger user_onupdate

-----------------

儲存過程語法

----------------------

--建立帶output引數的儲存過程

create procedure pr_sum

@a int ,

@b int ,

@ sum int output

asbegin

set @ sum =@a+@b

end--建立return返回值儲存過程

create procedure pr_sum2

@a int ,

@b int

asbegin

return @a+@b

end--執行儲存過程獲取output型返回值

declare @mysum int

execute pr_sum 1,2,@mysum output

print @mysum

--執行儲存過程獲取return型返回值

declare @mysum2 int

execute @mysum2= pr_sum2 1,2

print @mysum2---

-------------------

自定義函式

-----------------------

--函式的分類:

1)標量值函式

2)錶值函式

a:內聯錶值函式

b:多語句錶值函式

3)系統函式

--新建標量值函式

create function func_sum1

(@a int ,

@b int

)returns int

asbegin

return @a+@b

end--新建內聯錶值函式

create function func_usertab_1

(@myid int

)returns table

asreturn ( select * from st_user where id<@myid)

--新建多語句錶值函式

create function func_usertab_2

(@myid int

)returns @t table

([id] [ int ] not null ,

[oid] [ int ] not null ,

[login] [nvarchar](50) not null ,

[rtx] [nvarchar](4) not null ,

[ name ] [nvarchar](5) not null ,

[ password ] [nvarchar]( max ) null ,

[state] [nvarchar](8) not null)as

begin

insert into @t select * from st_user where id<@myid

return

end--呼叫錶值函式

select * from dbo.func_usertab_1(15)

--呼叫標量值函式

declare @s int

set @s=dbo.func_sum1(100,50)

print @s

--刪除標量值函式

drop function func_sum1

-------------------

自定義函式與儲存過程的區別

--------------------

--自定義函式:

1. 可以返回表變數

2. 限制頗多,包括

不能使用output引數;

不能用臨時表;

函式內部的操作不能影響到外部環境;

不能通過select返回結果集;

不能update,delete,資料庫表;

3. 必須return 乙個標量值或表變數

自定義函式一般用在復用度高,功能簡單單一,爭對性強的地方。

--儲存過程

1. 不能返回表變數

2. 限制少,可以執行對資料庫表的操作,可以返回資料集

3. 可以return乙個標量值,也可以省略return

儲存過程一般用在實現複雜的功能,資料操縱方面。

SQL Server 儲存過程與觸發器

定義 是一組為了完成特點功能的sql語句集,經編譯後儲存在資料中。包含 程式流 邏輯 對資料庫的查詢 建立儲存過程 create procedure 名稱 assql statement n 在可程式設計性中可以找到 exec 名稱 呼叫儲存過程 recompile encryption 加密 定義...

sqlserver觸發器複習

create table a a1 int,a2 int create table b b1 int,b2 int insert into a values 1,0 insert into b values 1,0 create trigger tri update a2 a on a for up...

SQL server 之 觸發器

今天對觸發器研究了一下,之前的學習感覺挺朦朧的,今天鼓搗了一天,算是有了一點點了解,把學習的體會記錄了下來。常見的觸發器 觸發器的作用 自動化操作,減少了手動操作以及出錯的機率 現實工作中用的比較少,因為想讓他執行起來效率高很難 一 dml觸發器 insert delete update 不支援se...