儲存過程的活用

2021-05-23 00:08:08 字數 931 閱讀 3609

我自己感覺學程式是有個逐步的過程的,剛開始學和.net與資料庫互動是在c#中的command命令中寫一些資料庫操作的**,如:

select * from student where studentid = @studentid

update student set studentname=@studentname where studentid = @studentid

insert into student (studentid,studentname) values(@studentid,@studentname )

再後來知道sql語句有注入等功能,而且為了保護資料的安全性,以及資料分層架構更加清晰,讓程式做程式的事,資料庫處理資料相關的東西,知道了應用儲存過程——create procedure ,但是這個時候儲存過程還只能實現單一的功能,比如說更新,比如說插入

再到最後認真思考思考發現對一張表的插入和刪除其實可以用乙個儲存過程來解決,可以對一些sql語句和儲存過程進行優化。如:

通過乙個id號來判斷是需要插入新記錄還是修改記錄

往往我們對於表中資料的獲取是不定的,有時候需要前三個字段,有時候需要後面幾個字段,這時候沒有必要每一種需求方式都寫乙個儲存過程,直接用乙個儲存過程讀出所有可能需要的字段,然後在程式中根據需要做繫結。

還有就是多查詢的實現,如何去實現那?下面例子中是兩個查詢條件,如果有多個話,只要增加引數就可以了。

如果我有時候需要對studentid排序,有時候又需要對studentname排序,是不是要寫兩個儲存過程啊?其實不需要,我們可以加乙個排序字段作為變數,動態指定排序的字段。下面的例子中預設情況下用studentid做排序字段。

我們經常在**或者其他地方看到cridview控制項中每一列都有乙個checkbox按鈕,然後可以選擇多行一起刪除,也就是批量刪除功能。首先我們把要刪除的列的所有值儲存在乙個串中,用「|」符號去分隔,用迴圈去讀取。

批量刪除儲存過程的儲存過程

create procedure dropprocedure as declare cur cursor read only for select name from sysobjects where xtype p and name like drop declare name varchar 4...

儲存過程調儲存過程的事務

直接上 是在包裡寫的儲存過程,要測試的話,要先寫宣告 宣告procedure test1 p retcode in out varchar2,p retinfo in out varchar2 procedure test2 p retcode in out varchar2,p retinfo i...

使用儲存過程進行分頁的 儲存過程

使用儲存過程進行分頁的 use blog gocreate procedure blogcontent page pagesize int,一頁多少條 pageindex int,第幾頁 pagecount int output 一共多少頁,輸出引數 asbegin declare totalrec...