線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1809
推到 Plurk!
推到 Facebook!

有關SQL預存程式與ASP之間的傳遞問題

尚未結案
laku0121
一般會員


發表:39
回覆:49
積分:17
註冊:2002-10-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-21 18:12:02 IP:220.135.xxx.xxx 未訂閱
我想使用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-22 13:52:40 IP:220.135.xxx.xxx 未訂閱
我終於成功了, 謝謝各位的指導 .. 以下是我測試沒有問題的程式, 願能與大家分享 ---------------------------------------------------------------------- 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
系統時間:2024-05-06 6:41:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!