sqlser存儲過程,今天早上因為項目需要,因為太多太多的這樣的程序,所以不可能在程序裡實現,顯得很繁瑣,所以我寫了一個SQLServer的存儲過程,找了半天,網上都是抄來抄去的東西沒點意義,還是自己想自己寫,寫下了一個存儲過程,很有用的。
CREATE PROCEDURE insertAdmin(@adminName varchar(100),
@adminPassWord varchar(100),@realName varchar(50),
@adminTypeId varchar(50),@departmentId varchar(50)
,@positionId varchar
(100)) AS
--存儲過程的基礎我這裡就不說了,直接說,上面是傳參,與自定義函數是一樣的。--
declare @sql nvarchar(100)
declare @num int
declare @adminType varchar(50)
declare @department varchar(50)
declare @positions varchar(50)
--declare是定義變量--
begin tran
--執行開始,先插入數據--
insert into Admin(adminName,adminPassWord,realName,adminTypeId,positionId,departmentId)
values(@adminName,@adminPassWord,@realName,@adminTypeId,@positionId,@departmentId)
--commit tran是事務的提交,如果沒有commit tran是一定一定會報錯的,所以網上很多垃圾寫不完整的--
commit tran
begin
set @num = (select SCOPE_IDENTITY())
--上面這句很重要啦,這個就是得到當前插入記錄的ID值,這個很重要--
select @department=d.departName,@positions=p.positionName,@adminType=g.groupName from Admin as a join department as d on a.departmentId=d.id join positions as p on a.positionId=p.id join groupManager as g on a.adminTypeId=g.groupId where a.id=@num
update Admin set where id=@num
--這個不用我多說了,SQL多表連接,四張表連接--
end
GO
在查詢分析器裡面或者程序調用:exec dbo.insertAdmin 'bb','123','sss','2','3','2' (這個是格式)即可,記住insertAdmin 後面是沒有括號的不要自作聰明啊!
--結束,這個就是存儲過程,本來想搞自定義表,然後實現動態存儲過程動態插入的,TMD不知道為什麼只能插入四個值,第四個開始就出錯,說沒有閉合符號,真TM的煩--
BEGIN TRAN標記事務開始
COMMIT TRAN 提交事務
一般把DML語句(select ,delete,update,insert語句)放在BEGIN TRAN...COMMIT TRAN...rollback tran 之間作為一個事務處理
也就是那些語句執行過程中如果遇到錯誤,無論哪句遇到錯誤,所有語句都會回滾到BEGIN TRAN之前的狀態。
rollback tran 回滾事務
Tran 全寫:Transaction 就是事務處理,通俗的說就是處理一件事情的過程。而 RollBack 則是回滾,兩個連起來,在SQL Server 中就是撤銷先前准備做的事情。比如,你先前在事務中准備插入記錄,使用,這個之後,則插入操作不再執行並撤銷已插入的部份記錄。
我知道上面的方法一定很多人需要,只是不知道怎麼去寫,所以現在共享下。其實很簡單的。