一、儲存過程
1.1、基本概念
實際上是儲存在資料庫中供所有使用者程式呼叫的子程式。
好處:允許模組化程式設計;改善效能;減少網路流量;增強應用程式的安全性。
1.2.1、建立
create procedure procedure_name
@ parame_name data_type
assql語句
1.2.2、執行儲存過程
execute procedure_name 引數
例:帶輸入引數和乙個輸出引數的儲存過程。建立統計指定型別商品的種類數的儲存過程,並將統計結果作為輸出引數返回。
create procedure p_goodscount
@ class varchar(20), @ count int output
asselect @ count=count(*) from table_goods a
join table_goodsclass b on a.goodsclassid = b.goodsclassid
where goodsclassname = @ class
執行此儲存過程
declare @ c int
exec p_goodscount '服裝' , @ c output
print @ c
1.2.3、刪除儲存過程
drop procedure procedure_name
二、使用者定義函式
它和儲存過程類似,但是函式必須有乙個return子句,用於返回函式值。
sqlserver2008支援兩類:標量函式和錶值函式。
2.1.1、建立標量函式
create function function_name
(@ parema_name data_type)
returns returndata_type
asbegin
function_body
return scalar_expression
end2.1.2、建立內聯錶值函式
create function function_name(@ pareme_name data_type)
returns table
asreturn (select_statement)
2.2刪除
drop function function_name
三、觸發器
3.1、基本概念
觸發器是一種特殊的儲存過程,它不需要使用者直接呼叫,在對錶中的資料進行update、inserte或delete操作時自動觸發。
保證了業務規則和資料完整性,完成比check約束更加複雜的資料約束。
在觸發器中,使用者執行資料的更改操作時,sqlserver自動建立和管理著兩張表:inserted和 deleted表。
deleted表用於儲存被更改的所有行在更改前的資料(按行進行);
inserted表用於儲存insert和update語句所影響的行的副本,是更改後的資料的副本。
三種型別:dml、ddl和登入觸發器。
3.2、建立dml觸發器
create trigger trigger_name
on as
for |after為後觸發型觸發器,只有引發的sql語句都成功執行,並且所有的約束檢查也成功後,才執行。(不能在檢視上定義after觸發器),在同一種操作上可以建立多個觸發器。
instead of為執行觸發器,也叫前觸發型觸發器。在同一種操作上只能建立乙個觸發器。
所有的建立和更改資料庫以及資料庫物件的語句、所有的drop語句都不允許在觸發器中使用。
3.3刪除
drop trigger trigger_name
四、游標
游標是乙個查詢結果,游標機制為使用者提供了在查詢結果集中進行行、列定位的操作,使得人們可以深入到結果集內部進行操作。
四 資料庫程式設計技術
一 一些高階查詢功能 當用check進行約束條件限制時,若其只涉及對某一列的約束則可以放在該列後面,如果是約束條件中涉及兩列或兩列以上,則為對整個資料表的約束,放在表的最後面 二 儲存過程 儲存過程是呼叫執行的 儲存在伺服器端的 段 儲存過程可以接受多個輸入引數,也可以接受多個輸出引數 儲存過程的優...
資料庫後台程式設計技術中的使用者定義函式
使用者定義函式與程式語言中的函式類似,其結構與儲存過程類似,但函式必須有乙個return子句,用於返回函式值。錶值函式 錶值函式將返回乙個表 語句錶值函式 多語句錶值函式的功能的功能是檢視和儲存過程的組合,可以利用多語句錶值函式返回乙個表,表中的內容可由複雜的邏輯和多條sql語句構建 類似於儲存過程...
Java資料庫程式設計技術 第一章習題
create table book bid varchar 20 not null comment 圖書編號 bname varchar 50 not null comment 圖書書名 author varchar 50 default null comment 作者姓名 pubcomp varc...