有關SQL預存程式與ASP之間的傳遞問題 |
尚未結案
|
laku0121
一般會員 發表:39 回覆:49 積分:17 註冊:2002-10-30 發送簡訊給我 |
我想使用ASP(不是ASP.NET)的運作方式來取得SQL的預存程式中的@iReturn 來判斷這個帳
號是否存在,以傳回來做判斷的依據
----------------------------------------------------------------------------
以下為SQL 預存程式,想用ASP中的ADO運作讀取
----------------------------------------------------------------------------
CREATE Procedure [up_M2]
@vcMemberID varchar(20), -- 會員帳號
@iReturn INT OUTPUT -- 回傳值
AS
BEGIN
SET NOCOUNT ON
DECLARE @CNT INT
SELECT @CNT=COUNT(*) FROM tbMember WHERE vcMemberID = @vcMemberID
IF @@ERROR <> 0 GOTO Error_Handler
IF @CNT= 0 GOTO Error_NOMAN
SET @iReturn = 0
RETURN
Error_Handler:
BEGIN
SET @iReturn = 1
SET NOCOUNT OFF
RETURN
END Error_NOMAN:
BEGIN
SET @iReturn = 2
SET NOCOUNT OFF
RETURN
END
END
GO ----------------------------------------------------------------------------
我的ASP 是使用
----------------------------------------------------------------------------
Dim RS1
Dim RS1_numRows,iReturn
Set RS1 = Server.CreateObject("ADODB.Recordset")
RS1.ActiveConnection = MM_strProjectA_STRING
RS1.Source = "{call dbo.up_M1('Jeep',0)}" ' -----> 這應是有問題的地方
RS1.CursorType = 0
RS1.CursorLocation = 2
RS1.LockType = 1
RS1.Open()
RS1_numRows = 0
iReturn = ' -----> 這個值等於 SQL 預存程式中的 @iReturn 但不知如何取得
Response.Write "iReturn : (" & iReturn&")
" ---------------------------------------------------------------------------- |
laku0121
一般會員 發表:39 回覆:49 積分:17 註冊:2002-10-30 發送簡訊給我 |
我終於成功了, 謝謝各位的指導 ..
以下是我測試沒有問題的程式, 願能與大家分享
----------------------------------------------------------------------
SQL 的預存程式
----------------------------------------------------------------------
CREATE Procedure [up_M1]
@vcMemberID VARCHAR(20) -- 會員帳號
AS
BEGIN
SET NOCOUNT ON
DECLARE @CNT INT -- 計算人數
DECLARE @iReturn INT -- 回傳值
SELECT @CNT=COUNT(*) FROM tbMember WHERE vcMemberID = @vcMemberID IF @@ERROR <> 0 GOTO Error_Handler -- 報行錯誤時
IF @CNT= 0 GOTO Error_NOMAN -- 當查不到時 SET @iReturn = 0 -- 正常時
SET NOCOUNT OFF
RETURN @iReturn
Error_Handler: -- 執行錯誤
BEGIN
SET @iReturn = 1
SET NOCOUNT OFF
RETURN @iReturn
END Error_NOMAN: -- 無此人
BEGIN
SET @iReturn = 2
SET NOCOUNT OFF
RETURN @iReturn
END
END
GO
----------------------------------------------------------------------
ASP 程式部份
----------------------------------------------------------------------
<%@LANGUAGE="VBSCRIPT" CODEPAGE="950"%>
<!--#include virtual="/Connections/strProjectA.asp" --> ' SQL 連結定義
<%
Dim iReturn
Dim AdVarChar,AdInteger,adParamInput,AdReturnValue AdVarChar = 129 ' VarChar型態
AdInteger = 3 ' Integer 型態
adParamInput = 1 ' 輸入參數
AdReturnValue = 4 ' 傳回值 set conn=server.CreateObject("adodb.connection")
set cmd = server.CreateObject("adodb.command") conn.Open MM_strProjectA_STRING ' SQL 連結定義
set cmd.ActiveConnection = conn Cmd.CommandText = "UP_M1"
adCmdStoredProc = 4 ' 使用類型
Cmd.CommandType = adCmdStoredProc 'CreateParameter (變數名稱, 變數的類型, Direction, 變數的長度, 變數值)
cmd.Parameters.Append cmd.CreateParameter("@iReturn", AdInteger, AdReturnValue ) ' 回傳一定要放在上面不然會出錯
cmd.Parameters.Append Cmd.CreateParameter("@vcMemberID", AdVarChar, adParamInput, 20, "J1eep") cmd.Execute() iReturn = cmd.Parameters("@iReturn").Value response.Write "<p>@iReturn = " & iReturn & " (查無此人)</p>" %>
----------------------------------------------------------------------
因為沒有J1eep 沒有這個人, 所以得到結果為 @iReturn = 2 (查無此人)
PS: 以上內容因為發表時發現一些沖碼的問題,有改為全型,如想直接拷回貼用的人請注意一下。 發表人 - laku0121 於 2005/07/22 13:56:15 發表人 - laku0121 於 2005/07/22 14:00:21
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |