שלח תשובה

זירת השאלות

732
צפיות
2
תשובות

יש לי בעיה store procedure

,‏ 1 במרץ, 2007

יש לי דף כניסה למורשים (שם וסיסמא) כתוב בASP.
משום מה הSP בפני עצמה עובדת (הרצתי בויזואל סטודיו)
אבל כשאני שולחת שם משתמש שקיים בטבלה הוא לא מוצא אותו בטבלה.

הSP:

CREATE PROCEDURE dbo.Check_admin
(@UserAdmin VarChar(50))  AS
select * from TBL_Users where  UserName = @UserAdmin
'GO


השליחה לפרוצדורה:



StrUserName=request("UserName")
    strSQL = "EXECUTE check_admin [@UserAdmin='"&StrUserName&"']"
    set rsUser=Server.CreateObject("ADODB.Recordset")
    rsUser.Open strSQL,objConn,3
    response.Write rsUser.RecordCount
    if rsUser.EOF then
        StrErr= "שם המשתמש או הסיסמא אינם קיימים  ! ? ! ? !"
        Response.Redirect  "Login.asp?Err1=" & StrErr
    else
        Response.Redirect "index.asp"
    end if


תגיות:

2 תשובות

  1. זהר פלד הגיב:

    אז ככה:
    קודם כל, הקריאה ל sp לא נכונה.
    לא צריך לציין את שם המשתנה. הדרך הנכונה תהיה כזו:

    strSQL = "EXEC check_admin '"& StrUserName &"'"

    (אין הבדל משמעותי בין exec ל execute במקרה הזה, לכן עדיף להשתמש במה שיותר קצר…)

    דבר שני, אין טעם לשלוף את כל השדות בטבלה במצב שרק רוצים לבדוק אם יש רשומה שעונה על התנאי. במצב כזה עדיף להשתמש ב exsist או ב count.

    דבר שלישי, אין טעם לפתוח recordset עם Cursor Type 3, כאשר אפשר לפתוח אותו עם Cursor Type 0, שהוא יותר יעיל. במידה ורוצים לדעת מה מספר הרשומות שעונות על התנאי, צריך להשתמש ב count ב sp עצמה.

שלח תשובה