標籤:style blog http color os io 使用 ar for
條件表達是裡面,可以使用一個只有一行一列的查詢作為判斷的一個根據
IF((SELECTCOUNT(id)FROM dbo.Student)>10)
BEGIN
PRINT‘好多人啊‘
END
ELSE
begin
PRINT‘人好少啊‘
END
?
?
輸出參數
ALTERPROCusp_GetStu
@iidINT= 2,--有預設值的參數可以不傳
@namenvarchar(10),--對於沒有寫預設值的參數,在調用的時候必須傳遞參數,
--在預存程序的參數被定義的時候,可以指定預設值
@totalCountint=0 OUTPUT--定義一個輸出參數
AS
begin
SELECT*FROMdbo.StudentWHEREName=@name
SELECT*FROMdbo.StudentWHEREid=@iid
SELECT@totalCount=COUNT(id)FROM dbo.Student
END
?
DECLARE@totalINT=0
EXECusp_GetStu@name=‘啊三‘,@totalCount=@totalOUTPUT--指定一個變數給輸出參數,
--在預存程序執行完畢以後,我們就可以通過變數得到資料的值了
SELECT@total
?
在使用SqlCommand 的時候,如果設定了CommandType屬性,那麼程式就會自動的按照SqlParameter的名字,給預存程序添加參數,在設定了屬性後sql語句就不用加上"EXEC"了
SqlCommand cmd = newSqlCommand("usp_ZZ", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter sp = newSqlParameter();
sp.ParameterName = "@mon";
sp.SqlDbType = SqlDbType.Int;
sp.Value = mon;
?
cmd.Parameters.Add(sp);
?
不指定CommandType可以就當做一個字串執行
SqlCommand cmd = newSqlCommand("EXEC usp_ZZ @mon", conn);
?
標識一個參數的方向 為output就是說這個參數是一個輸出參數
sp.Direction = ParameterDirection.Output;
取得輸出參數的值 ,注意,需要在command對象執行之後才能取值
MessageBox.Show(sp.Value.ToString());
?
?
觸發器
?
觸發器最難的是在與根據業務需求,寫出觸發器裡面需要執行的sql語句
觸發器本身並不難
After 和for 都是在增刪改執行的時候執行另外的sql語句
?
Instead of 是,取代原來的操作
?
--建立一個新增觸發器
CREATETRIGGERtgforClassesOnInsertONClasses
AFTERINSERT
as
begin
PRINT‘新增了一行資料‘
--INSERT INTO log (操作的表,執行時間,哪個使用者)
END
--建立一個刪除觸發器
CREATETRIGGERtgforClassesOnDeleteONClasses
AFTERDELETE
as
begin
PRINT‘刪除了一行資料‘
END
--建立一個修改觸發器
CREATETRIGGERtgForClassesOnUpdateONClasses
AFTERUPDATE
as
begin
PRINT‘修改了一行資料‘
END
?
--*********FOR
CREATETRIGGERtgclassupdateONclasses
FOR????update
as
begin
PRINT‘for的更新‘
END
CREATETRIGGERtgclassinsertONclasses
FOR????INSERT
as
begin
PRINT‘for的插入‘
END
CREATETRIGGERtgclassdeleteONclasses
FOR????DELETE
as
begin
PRINT‘for的刪除‘
END
--************instead OF
CREATETRIGGERtgclassesIinsertONclasses
insteadOFINSERT
as
begin
PRINT‘instead ++ INSERT‘
END
CREATETRIGGERtgclassesIupdateONclasses
insteadOFupdate
as
begin
PRINT‘instead ++ update‘
END
CREATETRIGGERtgclassesIdeleteONclasses
insteadOFdelete
as
begin
PRINT‘instead ++ delete‘
END
?
預存程序:
- 預存程序SqlHelper:
- 預存程序-轉賬+事務
- 帶參數的預存程序:
- 帶傳回值的預存程序:
- 帶兩個參數的預存程序:
- 預存程序-分頁
自寫的用於分頁:
返回頁碼,可以用內建函數:--SELECT @pageCount=CEILING((COUNT(id)*1.0)/@pageSize) FROM dbo.Student
?
- 事務:
- SqlHelper輸出參數-預存程序:
4.sql進階02(知識點)