写存储过程与调用存储过程
生活随笔
收集整理的這篇文章主要介紹了
写存储过程与调用存储过程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
--創建存儲過程的語法
if exists(select * from sysobjects where name='sp_selectStudent')
?drop procedure sp_selectStudent
go
create procedure sp_selectStudent
???? --定義參數
???? @gradeid int
???? --可以定義輸出參數,也有返回值,只有返回整型 return 0
as
?select * from Student where XSGrade=@gradeid
?--寫語句
go
--調用存儲過程
exec sp_selectStudent 10
----增加年級的存儲過程
if exists(select * from sysobjects where name='sp_addGrade')
?drop procedure sp_addGrade
go
create procedure sp_addGrade? --定義存儲過程
?@njname varchar(20)? --定義參數 各個參數,隔開
as
?insert into Grade(NJName) values(@njname)
go
--調用存儲過程
exec sp_addGrade 'S1'
--刪除年級的存儲過程,如果有學生,先刪學生,再刪年級
--[存儲過程封裝業務功能,使用事務]?
if exists(select * from sysobjects where name='sp_deleteGrade')
?drop procedure sp_deleteGrade
go
create procedure sp_deleteGrade
?@gradeid int --要刪除的年級id
as
?begin transaction --1開啟事務
?declare @err int --2.錯誤變量
?set @err=0
?--一個語句一個語句執行
?delete from Student where XSGrade=@gradeid
?set @err=@err+@@ERROR --錯誤累加
?--
?delete from Grade where NJId=@gradeid
?set @err=@err+@@ERROR
?--
?if(@err>0)
??begin
??? rollback transaction--回退事務
??end
?else
??begin
??? commit? transaction? --提交事務
??end
go ----------------ADO.net調用存儲過程
#region 調用刪除年級的存儲過程[調用增刪改的存儲過程方式]
???????? public void DelteGradePro(int gradeid)
???????? {
???????????? //1.創建連接對象
???????????? string Connstring = "Data Source=.;Initial Catalog=y2Net22DB;Integrated Security=True";
???????????? SqlConnection sqlconn = new SqlConnection(Connstring);
???????????? //2.執行的sql語句或者存儲過程名稱
???????????? string sql = "sp_deleteGrade";//存儲過程名
???????????? SqlCommand sqlcomm = new SqlCommand(sql, sqlconn);
???????????? //?? 存儲過程一定加上操作類型屬性
???????????? sqlcomm.CommandType = CommandType.StoredProcedure;//說明是存儲過程還是sql語句
???????????? //? 給存儲過程的輸入參數賦值
???????????? sqlcomm.Parameters.Add("@gradeid", gradeid);
???????????? //3.打開連接
???????????? sqlconn.Open();
???????????? //4.執行操作
???????????? sqlcomm.ExecuteNonQuery();
???????????? //5.關閉
???????????? sqlconn.Close();
???????? }
???????? #endregion
if exists(select * from sysobjects where name='sp_selectStudent')
?drop procedure sp_selectStudent
go
create procedure sp_selectStudent
???? --定義參數
???? @gradeid int
???? --可以定義輸出參數,也有返回值,只有返回整型 return 0
as
?select * from Student where XSGrade=@gradeid
?--寫語句
go
--調用存儲過程
exec sp_selectStudent 10
----增加年級的存儲過程
if exists(select * from sysobjects where name='sp_addGrade')
?drop procedure sp_addGrade
go
create procedure sp_addGrade? --定義存儲過程
?@njname varchar(20)? --定義參數 各個參數,隔開
as
?insert into Grade(NJName) values(@njname)
go
--調用存儲過程
exec sp_addGrade 'S1'
--刪除年級的存儲過程,如果有學生,先刪學生,再刪年級
--[存儲過程封裝業務功能,使用事務]?
if exists(select * from sysobjects where name='sp_deleteGrade')
?drop procedure sp_deleteGrade
go
create procedure sp_deleteGrade
?@gradeid int --要刪除的年級id
as
?begin transaction --1開啟事務
?declare @err int --2.錯誤變量
?set @err=0
?--一個語句一個語句執行
?delete from Student where XSGrade=@gradeid
?set @err=@err+@@ERROR --錯誤累加
?--
?delete from Grade where NJId=@gradeid
?set @err=@err+@@ERROR
?--
?if(@err>0)
??begin
??? rollback transaction--回退事務
??end
?else
??begin
??? commit? transaction? --提交事務
??end
go ----------------ADO.net調用存儲過程
#region 調用刪除年級的存儲過程[調用增刪改的存儲過程方式]
???????? public void DelteGradePro(int gradeid)
???????? {
???????????? //1.創建連接對象
???????????? string Connstring = "Data Source=.;Initial Catalog=y2Net22DB;Integrated Security=True";
???????????? SqlConnection sqlconn = new SqlConnection(Connstring);
???????????? //2.執行的sql語句或者存儲過程名稱
???????????? string sql = "sp_deleteGrade";//存儲過程名
???????????? SqlCommand sqlcomm = new SqlCommand(sql, sqlconn);
???????????? //?? 存儲過程一定加上操作類型屬性
???????????? sqlcomm.CommandType = CommandType.StoredProcedure;//說明是存儲過程還是sql語句
???????????? //? 給存儲過程的輸入參數賦值
???????????? sqlcomm.Parameters.Add("@gradeid", gradeid);
???????????? //3.打開連接
???????????? sqlconn.Open();
???????????? //4.執行操作
???????????? sqlcomm.ExecuteNonQuery();
???????????? //5.關閉
???????????? sqlconn.Close();
???????? }
???????? #endregion
轉載于:https://www.cnblogs.com/xsdm/p/1060534414_qq10.html
總結
以上是生活随笔為你收集整理的写存储过程与调用存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单搜索算法
- 下一篇: luogu P3391 【模板】文艺平衡