寫儲存過程與呼叫儲存過程
阿新 • • 發佈:2018-12-03
--建立儲存過程的語法
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 [email protected]
--寫語句
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 [email protected]
set @[email protected][email protected]@ERROR --錯誤累加
--
delete from Grade where [email protected]
set @[email protected][email protected]@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
--寫語句
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
set @[email protected][email protected]@ERROR --錯誤累加
--
delete from Grade where [email protected]
set @[email protected][email protected]@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