4.sql進階02(知識點)

來源:互聯網
上載者:User

標籤: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

?

預存程序:

  1. 預存程序SqlHelper:

  1. 預存程序-轉賬+事務

  2. 帶參數的預存程序:

  3. 帶傳回值的預存程序:

  4. 帶兩個參數的預存程序:

  5. 預存程序-分頁

自寫的用於分頁:

返回頁碼,可以用內建函數:--SELECT @pageCount=CEILING((COUNT(id)*1.0)/@pageSize) FROM dbo.Student

?

  1. 事務:

  2. SqlHelper輸出參數-預存程序:

4.sql進階02(知識點)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.