實踐sql server存儲過程及觸發(fā)器
本文作者和您一起實踐sql server存儲過程及觸發(fā)器,這可能也是整修數(shù)據(jù)庫的精華所在吧!
1.創(chuàng)建SQL存儲過程:CREATE PROCEDURE stu_proc1//指定過程名;@Sno varchar(50); ='7000803068',//定義參數(shù)以及默認值; AS//執(zhí)行SQL語句;select * from Student ;where Sno=@Sno;GO
Declare @XXX聲明變量set @XXX=XXX設(shè)定變量值同時里面也有if else while等語句不過得加上begin end
2.執(zhí)行存儲過程; Execute stu_proc1 @Sno='XXX' @Sname='XXXX'
其實可以把存儲過程看成一個C語言的函數(shù)。函數(shù)名是存儲過程名,形參是也是里面的參數(shù),里面還有局部變量,同時也可設(shè)定值。也可以返回值,用return語句。里面可以用到if else,while語句。但是C里面的函數(shù)功能會更大,不能等同,只能做比較。寫存儲過程也有點像寫個函數(shù)一樣。
同時在JAVA語言中也可以調(diào)用存儲過程,類似C里調(diào)用函數(shù)。設(shè)定形參值。
3.JDBC中調(diào)用存儲過程;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();
存儲過程可以提高訪問數(shù)據(jù)庫的性能和速度。觸發(fā)器是一種特殊的存儲過程,主要用于update,insert,delete這三種語句,主要是處理表與表之間的關(guān)聯(lián),也就是約束性吧。同時有二個表inserted(插入表),deleted(刪除表)而update可以看成先刪除,然后插入.比如,當要刪除一個學生時,同時該學生的選課記錄也是要刪除的,這時可以在學生表進建個觸發(fā)器就可以實現(xiàn)這種功能。
觸發(fā)器就是可以進行關(guān)聯(lián)操作,而單單SQL語句不能做到這一點。
CREATE TRIGGER StudentDelete ON [dbo].[Student] FOR; DELETE ASdelete from SC where SC.Sno=(select Sno from deleted)
語句形式跟存儲過程是一致的,因為觸發(fā)器本身就是一種存儲過程.
相關(guān)文章:
1. SQLServer創(chuàng)建索引的5種方法小結(jié)2. 如何:創(chuàng)建和運行 CLR SQL Server 觸發(fā)器3. SQLSERVER 臨時表和表變量的區(qū)別匯總4. MySql視圖觸發(fā)器存儲過程詳解5. Linux安裝ODBC連接SQLServer數(shù)據(jù)庫的步驟6. SQLServer"通過端口1433連接到主機localhost的TCP/IP連接失敗"常見問題的解決方案7. 系統(tǒng)從oracle版本轉(zhuǎn)化為sqlserver版本8. SQLserver2019 Express安裝及其一些問題解決9. mysql和sqlserver查詢數(shù)據(jù)庫表的數(shù)量方法詳解10. SqlServer常用函數(shù)及時間處理小結(jié)
