日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQLserve数据库存储过程

發布時間:2024/3/24 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQLserve数据库存储过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

存儲過程

能夠快速簡便的實現某種功能,

系統存儲過程:由數據庫管理器創建,實現對數據庫管理器、數據庫對象的操作,以sp_開頭

擴展存儲過程

允許使用其他編程語言創建外部存儲過程,以xp_

用戶存儲過程

用戶自行編寫,對某張表或數據庫進行快速操作的存儲過程

調用存儲過程

exec 存儲過程名 參數值

系統存儲過程

sp_databases 列出服務器上的所有數據庫信息,包括數據庫名和數據大小

sp_helpdb 報告有關指定數據庫或所有數據庫信息

sp_renamedb 更改數據庫名

sp_tables 返回當前環境下可查詢的表信息

sp_columns 返回某個視圖或表的信息,包括數據類型和長度

sp_help 查看某個數據庫對象的信息,如列名、主鍵、約束、外鍵、索引等

sp_helpconstraint 查看某個表的約束

sp_helpindex 查看某個表的索引

sp_stored_procedures 顯示存儲過程列表

sp_password 添加或修改登錄賬戶的密碼

sp_helptext 顯示默認值、未加密的存儲過程、用戶自定義過程、觸發器或視圖實際文本

擴展存儲過程

應用舉例:

EXEC ?xp_cmdshell ?‘mkdir ?D:\shopping’, ?NO_OUTPUT;

--創建文件夾D:\shopping

EXEC ?xp_cmdshell ?‘dir ?D:\shopping\’

使用以下語句來啟用:

EXEC ?sp_configure ?‘show ?advanced ?options’,1

\\顯示高級配置信息

GO

RECONFIGURE --重新配置

GO

EXEC ?sp_configure ?‘xp_cmdshell’,1 --打開xp_cmdshell

GO

RECONFIGURE --重新配置

GO

用戶存儲過程

完整的存儲過程包括

輸入參數和輸出參數

執行的T-sql語句

存儲過程返回值

①無參存儲過程

語法格式:

CREATE ?PROC [EDURE] ?<過程名>

AS

<T-SQL語句> ?????----包括增刪改查

實例

create proc name

as

select * from User_Info

where

User_pwd='123.com'

執行name存儲過程

exec name

②帶入參存儲過程

在調用存儲過程時需要手動輸入條件稱為入參存儲過程。

語法格式:

CREATE ?PROC ?<過程名1>(<入參1>[,<入參2>]…)

AS

<過程化SQL塊>

實例

create proc loginname1(@login varchar(50))

as

select * from User_Info

where

User_login_name=@login

exec loginname1 'zhaosi'

③帶出參存儲過程

在調用出參存儲過程時直接顯示出參結果稱為出參存儲過程。

語法格式:

CREATE ?PROC ?<過程名>(<入參1>,<出參1 ?OUTPUT> )

AS

<過程化SQL塊>

實例:

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

修改存儲過程

將創建命令改成alter即可

---查看存儲過程屬性信息、參數與數據類型---

sp_help ?<存儲過程名>

sp_help loginname1

刪除存儲過程

語法格式:

DROP ?PROC ?<存儲過程名>

drop proc loginname1

觸發器

用戶對表的增刪改查會激活觸發器執行相應動作

常用觸發器

DDL觸發器:響應事件包括create、alter、drop,

DML觸發器:insert、update、delete

DML觸發器又分為alter觸發器、instead of觸發器

alter屬于后置觸發器,只適用于基本表

instead of是前置觸發器,適用于表和視圖

DML觸發器的類型

delete:刪除表中數據觸發

insert:插入表中數據觸發

update:更新表中數據觸發

創建觸發器

語法格式:

CREATE ?TRIGGER ?<觸發器名>

ON <數據表 | 視圖 | DATABASE>

<AFTER | FOR | INSTEAD ?OF> ?<delete | insert | update>

AS

<觸發動作體>

實例

create trigger ppp

on User_Info

for insert

as

select * from User_Info;

修改觸發器

重命名觸發器

exec ?sp_rename ?<原觸發器名>,<新觸發器名>

exec sp_rename ppp,ooo

修改觸發器內容

ALTER ?TRIGGER ?<觸發器名>

ON ?<數據表 | 視圖 | DATABASE>

<AFTER | FOR | INSTEAD ?OF><觸發事件>

AS

<觸發動作體>

禁用觸發器

語法格式:

---禁用DML觸發器---

DISABLE ?TRIGGER ?<觸發器名> ?ON ?<表 | 視圖>

---禁用DDL觸發器Goods_tring---

DISABLE ?TRIGGER ?Goods_tring ?ON ?DATABASE

disable trigger ooo on User_Info

刪除觸發器

語法格式:

DROP ?TRIGGER ?<觸發器名>

drop trigger ooo

事務

是訪問并可能操作各種數據的一個數據庫操作序列,要么全部執行,要么全部不執行,不可分割。

事務的特性

原子性:事務中所有操作是不可分割的,要么全部執行,要么全部不執行

一致性:幾個并行執行的事務,并行執行的結果必須與按照某一順序串行執行結果一致

奪隔離性:事務的執行不受其他事務的干擾,系統執行的中間結果對其他事務必須是透明的

奪持久性:對于任意已提交的事務,系統必須保證該事務對數據庫的改變不丟失

數據庫事務模型:

顯式事務:稱為用戶自定義事務,是指顯式的方式定義開始和結束的事務,當使用start transaction和commit語句時表示顯式事務

隱式事務:指每一條數據操作都自動成為一個事務,事務的開始是隱式的。

自動事務:指能夠自動開啟事務并且能夠自動結束事務,如果沒有出現異常則自動提交,如果執行錯誤則自動回滾

Windows ?SQL ?Server數據庫默認使用的就是隱式事務。

begin ?transaction:開啟事務

commit ?transaction:提交事務

rollback ?transaction:回滾事務

實例:

開啟顯示事務,開啟一個事務,插入一條數據,然后回滾。

set implicit transactions off; \\可忽略

go

begin transaction;

go

insert into User_Info

(User_login_name,User_pwd)

values

('chou','123456')

rollback transaction;

總結

以上是生活随笔為你收集整理的SQLserve数据库存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。