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