儲存過程從入門到熟練

2022-02-28 22:17:50 字數 2636 閱讀 8395

①為什麼要使用儲存過程?

因為它比sql語句執行快.

③來乙個最簡單的儲存過程

create procedure dbo.testprocedure_ax

asselect userid from users order by userid desc

注:dbo.testprocedure_ax是你建立的儲存過程名,可以改為:axzhz等,別跟關鍵字衝突就行了.as下面就是一條sql語句,不會寫sql語句的請迴避.

④我怎麼在asp.net中呼叫這個儲存過程?

下面黃底的這兩行就夠使了.

public static string getcustomercname(ref arraylist arraycname,ref arraylist arrayid)

}con.close();

return "ok!";

}catch(exception ex)

}注:其實就是把以前

sqlcommand cmd=new sqlcommand("select userid from users order by userid desc",con);

中的sql語句替換為儲存過程名,再把cmd的型別標註為commandtype.storedprocedure(儲存過程)

⑤寫個帶引數的儲存過程吧,上面這個簡單得有點慘不忍睹,不過還是蠻實用的.

引數帶就帶兩,乙個的沒面子,太小家子氣了.

create procedure dbo.axzhz

/*這裡寫注釋

*/@startdate varchar(16),

@enddate varchar(16)

asselect id  from table_ax where commentdatetime>@startdate and commentdatetime<@enddate order by contentownerid desc

注:@startdate varchar(16)是宣告@startdate 這個變數,多個變數名間用【,】隔開.後面的sql就可以使用這個變數了.

⑥我怎麼在asp.net中呼叫這個帶引數的儲存過程?

public static string getcustomercnamecount(string startdate,string enddate,ref dataset ds)

catch(exception ex)

}注:把命令的引數新增進去,就ok了

鳥的,改字型顏色的東西太垃圾了,改不好,大家湊活著看.

⑦我還想看看sql命令執行成功了沒有.

注意看下面三行紅色的語句

create procedure dbo.axzhz

/*@parameter1 使用者名稱

@parameter2 新密碼

*/@password nvarchar(20),

@username nvarchar(20)

asdeclare @err0 int

update wl_user set password=@password where username=@username

set @err0=@@error

select  @err0 as err0

注:先宣告乙個整型變數@err0,再給其賦值為@@error(這個是系統自動給出的語句是否執行成功,0為成功,其它為失敗),最後通過select把它選擇出來,某位高人說可以通過return返回,超出本人的認知範圍,俺暫時不會,以後再補充吧

⑧那怎麼從後台獲得這個執行成功與否的值呢?

下面這段**可以告訴你答案:

public static string getcustomercname()

catch(exception ex)

}注:就是通過sqlcommand的executescalar()方法取回這個值,這句話是從msdn上找的,俺認為改成:

int re=(int)cmd.executescalar();  99%正確,現在沒時間驗證,期待您的測試!!!

⑨我要根據傳入的引數判斷執行哪條sql語句!!~

下面這個儲存過程可以滿足我們的要求,竟然是pascal/vb的寫法,begin----end ,不是{},,,對使用c#的我來說,這個語法有點噁心.........

alter procedure dbo.selectcustomercnamecount

@customerid int

asif @customerid=-1

begin

select contentownerid ,usercname,count(*) as countall from view_usercomment group by contentownerid,usercname order by contentownerid desc

endelse

begin

select contentownerid ,usercname,count(*) as countall from view_usercomment where contentownerid=@customerid group by contentownerid,usercname order by contentownerid desc

end好了,俺的水平只止於此,也夠菜鳥們喝一壺的了,還有更多東西等著我們去發現,無盡的征途!!!!!!!!!!!

Kafka多維度系統精講,從入門到熟練掌握

kafka多維度系統精講,從入門到熟練掌握 kafka幾乎是當今時代背景下資料管道的首選,無論你是做後端開發 還是大資料開發,對它可能都不陌生。可是市面上全面系統講解kafka的課程有多少呢?寥寥無幾。本課從搭建開始,帶你平滑上手。全面剖析kafka,解讀和使用核心api,並將底層實現和設計原理融合...

Kafka多維度系統精講,從入門到熟練掌握

kafka多維度系統精講,從入門到熟練掌握 kafka幾乎是當今時代背景下資料管道的首選,無論你是做後端開發 還是大資料開發,對它可能都不陌生。可是市面上全面系統講解kafka的課程有多少呢?寥寥無幾。本課從搭建開始,帶你平滑上手。全面剖析kafka,解讀和使用核心api,並將底層實現和設計原理融合...

動態規劃入門到熟練之路 0

這個動態規劃系列主要是給自己平時的練習做個記錄,寫部落格的過程也是乙個熟悉與提高的過程,記得有一句話,提高動態規劃能力最好的方法就是思考每乙個狀態和狀態轉移方程是怎麼來的,而寫部落格這麼個講述的過程,就要求我能真正理解到那樣一種思維過程,其次也是方便後來的初學者的學習吧,我個人是挺頭疼動態規劃的,前...