1. 程式人生 > >寫儲存過程與呼叫儲存過程

寫儲存過程與呼叫儲存過程

--建立儲存過程的語法
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