SQLserve数据库存储过程
存儲(chǔ)過(guò)程
能夠快速簡(jiǎn)便的實(shí)現(xiàn)某種功能,
系統(tǒng)存儲(chǔ)過(guò)程:由數(shù)據(jù)庫(kù)管理器創(chuàng)建,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)管理器、數(shù)據(jù)庫(kù)對(duì)象的操作,以sp_開(kāi)頭
擴(kuò)展存儲(chǔ)過(guò)程
允許使用其他編程語(yǔ)言創(chuàng)建外部存儲(chǔ)過(guò)程,以xp_
用戶存儲(chǔ)過(guò)程
用戶自行編寫(xiě),對(duì)某張表或數(shù)據(jù)庫(kù)進(jìn)行快速操作的存儲(chǔ)過(guò)程
調(diào)用存儲(chǔ)過(guò)程
exec 存儲(chǔ)過(guò)程名 參數(shù)值
系統(tǒng)存儲(chǔ)過(guò)程
sp_databases 列出服務(wù)器上的所有數(shù)據(jù)庫(kù)信息,包括數(shù)據(jù)庫(kù)名和數(shù)據(jù)大小
sp_helpdb 報(bào)告有關(guān)指定數(shù)據(jù)庫(kù)或所有數(shù)據(jù)庫(kù)信息
sp_renamedb 更改數(shù)據(jù)庫(kù)名
sp_tables 返回當(dāng)前環(huán)境下可查詢的表信息
sp_columns 返回某個(gè)視圖或表的信息,包括數(shù)據(jù)類型和長(zhǎng)度
sp_help 查看某個(gè)數(shù)據(jù)庫(kù)對(duì)象的信息,如列名、主鍵、約束、外鍵、索引等
sp_helpconstraint 查看某個(gè)表的約束
sp_helpindex 查看某個(gè)表的索引
sp_stored_procedures 顯示存儲(chǔ)過(guò)程列表
sp_password 添加或修改登錄賬戶的密碼
sp_helptext 顯示默認(rèn)值、未加密的存儲(chǔ)過(guò)程、用戶自定義過(guò)程、觸發(fā)器或視圖實(shí)際文本
擴(kuò)展存儲(chǔ)過(guò)程
應(yīng)用舉例:
EXEC ?xp_cmdshell ?‘mkdir ?D:\shopping’, ?NO_OUTPUT;
--創(chuàng)建文件夾D:\shopping
EXEC ?xp_cmdshell ?‘dir ?D:\shopping\’
使用以下語(yǔ)句來(lái)啟用:
EXEC ?sp_configure ?‘show ?advanced ?options’,1
\\顯示高級(jí)配置信息
GO
RECONFIGURE --重新配置
GO
EXEC ?sp_configure ?‘xp_cmdshell’,1 --打開(kāi)xp_cmdshell
GO
RECONFIGURE --重新配置
GO
用戶存儲(chǔ)過(guò)程
完整的存儲(chǔ)過(guò)程包括
輸入?yún)?shù)和輸出參數(shù)
執(zhí)行的T-sql語(yǔ)句
存儲(chǔ)過(guò)程返回值
①無(wú)參存儲(chǔ)過(guò)程
語(yǔ)法格式:
CREATE ?PROC [EDURE] ?<過(guò)程名>
AS
<T-SQL語(yǔ)句> ?????----包括增刪改查
實(shí)例
create proc name
as
select * from User_Info
where
User_pwd='123.com'
執(zhí)行name存儲(chǔ)過(guò)程
exec name
②帶入?yún)⒋鎯?chǔ)過(guò)程
在調(diào)用存儲(chǔ)過(guò)程時(shí)需要手動(dòng)輸入條件稱為入?yún)⒋鎯?chǔ)過(guò)程。
語(yǔ)法格式:
CREATE ?PROC ?<過(guò)程名1>(<入?yún)?>[,<入?yún)?>]…)
AS
<過(guò)程化SQL塊>
實(shí)例
create proc loginname1(@login varchar(50))
as
select * from User_Info
where
User_login_name=@login
exec loginname1 'zhaosi'
③帶出參存儲(chǔ)過(guò)程
在調(diào)用出參存儲(chǔ)過(guò)程時(shí)直接顯示出參結(jié)果稱為出參存儲(chǔ)過(guò)程。
語(yǔ)法格式:
CREATE ?PROC ?<過(guò)程名>(<入?yún)?>,<出參1 ?OUTPUT> )
AS
<過(guò)程化SQL塊>
實(shí)例:
create proc loginname1(@type varchar(50),@num int output)
as
select @num=count(*) from User_Info
where
User_login_name=@type;
declare @num int
declare @type varchar(50)='zhaosi'
exec loginname2 @type,@num output
select @type,@num
修改存儲(chǔ)過(guò)程
將創(chuàng)建命令改成alter即可
---查看存儲(chǔ)過(guò)程屬性信息、參數(shù)與數(shù)據(jù)類型---
sp_help ?<存儲(chǔ)過(guò)程名>
sp_help loginname1
刪除存儲(chǔ)過(guò)程
語(yǔ)法格式:
DROP ?PROC ?<存儲(chǔ)過(guò)程名>
drop proc loginname1
觸發(fā)器
用戶對(duì)表的增刪改查會(huì)激活觸發(fā)器執(zhí)行相應(yīng)動(dòng)作
常用觸發(fā)器
DDL觸發(fā)器:響應(yīng)事件包括create、alter、drop,
DML觸發(fā)器:insert、update、delete
DML觸發(fā)器又分為alter觸發(fā)器、instead of觸發(fā)器
alter屬于后置觸發(fā)器,只適用于基本表
instead of是前置觸發(fā)器,適用于表和視圖
DML觸發(fā)器的類型
delete:刪除表中數(shù)據(jù)觸發(fā)
insert:插入表中數(shù)據(jù)觸發(fā)
update:更新表中數(shù)據(jù)觸發(fā)
創(chuàng)建觸發(fā)器
語(yǔ)法格式:
CREATE ?TRIGGER ?<觸發(fā)器名>
ON <數(shù)據(jù)表 | 視圖 | DATABASE>
<AFTER | FOR | INSTEAD ?OF> ?<delete | insert | update>
AS
<觸發(fā)動(dòng)作體>
實(shí)例
create trigger ppp
on User_Info
for insert
as
select * from User_Info;
修改觸發(fā)器
重命名觸發(fā)器
exec ?sp_rename ?<原觸發(fā)器名>,<新觸發(fā)器名>
exec sp_rename ppp,ooo
修改觸發(fā)器內(nèi)容
ALTER ?TRIGGER ?<觸發(fā)器名>
ON ?<數(shù)據(jù)表 | 視圖 | DATABASE>
<AFTER | FOR | INSTEAD ?OF><觸發(fā)事件>
AS
<觸發(fā)動(dòng)作體>
禁用觸發(fā)器
語(yǔ)法格式:
---禁用DML觸發(fā)器---
DISABLE ?TRIGGER ?<觸發(fā)器名> ?ON ?<表 | 視圖>
---禁用DDL觸發(fā)器Goods_tring---
DISABLE ?TRIGGER ?Goods_tring ?ON ?DATABASE
disable trigger ooo on User_Info
刪除觸發(fā)器
語(yǔ)法格式:
DROP ?TRIGGER ?<觸發(fā)器名>
drop trigger ooo
事務(wù)
是訪問(wèn)并可能操作各種數(shù)據(jù)的一個(gè)數(shù)據(jù)庫(kù)操作序列,要么全部執(zhí)行,要么全部不執(zhí)行,不可分割。
事務(wù)的特性
原子性:事務(wù)中所有操作是不可分割的,要么全部執(zhí)行,要么全部不執(zhí)行
一致性:幾個(gè)并行執(zhí)行的事務(wù),并行執(zhí)行的結(jié)果必須與按照某一順序串行執(zhí)行結(jié)果一致
奪隔離性:事務(wù)的執(zhí)行不受其他事務(wù)的干擾,系統(tǒng)執(zhí)行的中間結(jié)果對(duì)其他事務(wù)必須是透明的
奪持久性:對(duì)于任意已提交的事務(wù),系統(tǒng)必須保證該事務(wù)對(duì)數(shù)據(jù)庫(kù)的改變不丟失
數(shù)據(jù)庫(kù)事務(wù)模型:
顯式事務(wù):稱為用戶自定義事務(wù),是指顯式的方式定義開(kāi)始和結(jié)束的事務(wù),當(dāng)使用start transaction和commit語(yǔ)句時(shí)表示顯式事務(wù)
隱式事務(wù):指每一條數(shù)據(jù)操作都自動(dòng)成為一個(gè)事務(wù),事務(wù)的開(kāi)始是隱式的。
自動(dòng)事務(wù):指能夠自動(dòng)開(kāi)啟事務(wù)并且能夠自動(dòng)結(jié)束事務(wù),如果沒(méi)有出現(xiàn)異常則自動(dòng)提交,如果執(zhí)行錯(cuò)誤則自動(dòng)回滾
Windows ?SQL ?Server數(shù)據(jù)庫(kù)默認(rèn)使用的就是隱式事務(wù)。
begin ?transaction:開(kāi)啟事務(wù)
commit ?transaction:提交事務(wù)
rollback ?transaction:回滾事務(wù)
實(shí)例:
開(kāi)啟顯示事務(wù),開(kāi)啟一個(gè)事務(wù),插入一條數(shù)據(jù),然后回滾。
set implicit transactions off; \\可忽略
go
begin transaction;
go
insert into User_Info
(User_login_name,User_pwd)
values
('chou','123456')
rollback transaction;
總結(jié)
以上是生活随笔為你收集整理的SQLserve数据库存储过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: ARCGIS进行投影变换
 - 下一篇: 计算机可以绘哪些专业图,电脑绘图软件有哪