ASP開發中儲存過程應用全接觸 2

2021-04-07 01:31:36 字數 1827 閱讀 8481

3. 有返回值的儲存過程 

在進行類似sp2的操作時,應充分利用sql server強大的事務處理功能,以維護資料的一致性。並且,我們可能需要儲存過程返回執**況,為此,將sp2修改如下: 

/*sp3*/ 

create procedure dbo.deluserall 

as 

set nocount on 

begin 

begin transaction 

delete from dbo.[userinfo] 

if error=0 

begin 

commit transaction 

return 1 

end 

else 

begin 

rollback transaction 

return 0 

end 

return 

end 

go 

以上儲存過程,在delete順利執行時,返回1,否則返回0,並進行回滾操作。為了在asp中取得返回值,需要利用parameters集合來宣告引數: 

第乙個引數("reture")為引數名。引數名可以任意設定,但一般應與儲存過程中宣告的引數名相同。此處是返回值,我習慣上設為"reture"; 

adbigint: 20 ; 

adbinary : 128 ; 

adboolean: 11 ; 

adchar: 129 ; 

addbtimestamp: 135 ; 

adempty: 0 ; 

adinteger: 3 ; 

ad**allint: 2 ; 

adtinyint: 16 ; 

advarchar: 200 ; 

對於返回值,只能取整形,且-1到-99為保留值; 

第三個引數(4),表明引數的性質,此處4表明這是乙個返回值。此引數取值的說明如下: 

0 : 型別無法確定; 1: 輸入引數;2: 輸入引數;3:輸入或輸出引數;4: 返回值 

以上給出的asp**,應該說是完整的**,也即最複雜的**,其實 

對於帶引數的儲存過程,只能使用command物件呼叫(也有資料說可通過connection物件或recordset物件呼叫,但我沒有試成過)。 

4. 有輸入引數和輸出引數的儲存過程 

返回值其實是一種特殊的輸出引數。在大多數情況下,我們用到的是同時有輸入及輸出引數的儲存過程,比如我們想取得使用者資訊表中,某id使用者的使用者名稱,這時候,有乙個輸入引數----使用者id,和乙個輸出引數----使用者名稱。實現這一功能的儲存過程如下: 

/*sp4*/ 

create procedure dbo.getusername 

@userid int, 

@username varchar(40) output 

as 

set nocount on 

begin 

if @userid is null return 

select @username=username 

from dbo.[userinfo] 

where userid=@userid 

return 

end 

go 

呼叫該儲存過程的asp**如下: 

需要特別注意的是:在宣告引數時,順序一定要與儲存過程中定義的順序相同,而且各引數的資料型別、長度也要與儲存過程中定義的相同。 

如果儲存過程有多個引數,asp**會顯得繁瑣,可以使用with命令簡化**: 

ASP開發中儲存過程應用全接觸

asp與儲存過程 stored procedures 的文章不少,但是我懷疑作者們是否真正實踐過。我在初學時查閱過大量相關資料,發現其中提供的很多方法實際操作起來並不是那麼回事。對於簡單的應用,這些資料也許是有幫助的,但僅限於此,因為它們根本就是千篇一律,互相抄襲,稍微複雜點的應用,就全都語焉不詳了...

asp程式設計 ASP開發中儲存過程應用全接觸 2

3.有返回值的儲存過程 在進行類似sp2的操作時,應充分利用sql server強大的事務處理功能,以維護資料的一致性。並且,我們可能需要儲存過程返回執 況,為此,將sp2修改如下 sp3 create procedure dbo.deluserall as set nocount on begin...

ASP開發中儲存過程應用全接觸 1

asp與儲存過程 stored procedures 的文章不少,但是我懷疑作者們是否真正實踐過。我在初學時查閱過大量相關資料,發現其中提供的很多方法實際操作起來並不是那麼回事。對於簡單的應用,這些資料也許是有幫助的,但僅限於此,因為它們根本就是千篇一律,互相抄襲,稍微複雜點的應用,就全都語焉不詳了...