一直都想找個時間研究一下,今天花了一天時間去實踐了一下,非常有用。可以說是數據庫里面的精華吧。還好我今天去弄了幾下,雖說都是些簡單的語句,但是最起碼知道以后在項目該怎么去做了。 閑話少說。進入正題。
1.創建SQL存儲過程:
CREATE PROCEDURE stu_proc1//指定過程名
@Sno varchar(50) ='7000803068',//定義參數以及默認值
AS//執行SQL語句
select * from Student
where Sno=@Sno
GO
Declare @XXX聲明變量
set @XXX=XXX設定變量值
同時里面也有if else while等語句不過得加上begin end
2.執行存儲過程
Execute stu_proc1 @Sno='XXX' @Sname='XXXX'
其實可以把存儲過程看成一個C語言的函數。函數名是存儲過程名,形參是也是里面的參數,里面還有局部變量,同時也可設定值。也可以返回值,用return語句。里面可以用到if else,while語句。但是C里面的函數功能會更大,不能等同,只能做比較。寫存儲過程也有點像寫個函數一樣。
同時在java語言中也可以調用存儲過程,類似C里調用函數。設定形參值。
3.JDBC中調用存儲過程
CallableStatement對象
String sql="{call stu_proc1(?,?)}";
String firstVal="";
String secondVal="";
Class.forName();
Connection conn=DriverManager.getConnection("","","");
CallableStatement stmt=conn.prepareCall(sql);
stmt.setString(1,firstVal);
stmt.setString(2,secondVal);
ResultSet rs=stmt.executeQuery();
存儲過程可以提高訪問數據庫的性能和速度。
觸發器是一種特殊的存儲過程,主要用于update,insert,delete這三種語句,主要是處理表與表之間的關聯,也就是約束性吧。同時有二個表inserted(插入表),deleted(刪除表)而update可以看成先刪除,然后插入.比如,當要刪除一個學生時,同時該學生的選課記錄也是要刪除的,這時可以在學生表進建個觸發器就可以實現這種功能。
觸發器就是可以進行關聯操作,而單單SQL語句不能做到這一點。
CREATE TRIGGER StudentDelete ON [dbo].[Student]
FOR DELETE
AS
delete from SC where SC.Sno=(select Sno from deleted)
語句形式跟存儲過程是一致的,因為觸發器本身就是一種存儲過程.
新聞熱點
疑難解答