שלח תשובה

זירת השאלות

632
צפיות
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 עצמה.

שלח תשובה

חדש! אחסון אתרים של וובמאסטר

שירות אחסון אתרים
המקצועי של וובמאסטר!

מומחים באירוח אתרי
WordPress, Joomla, Drupal

  • שרתי לינוקס עם CloudLinux, LiteSpeed
  • 1GB דיסק SSD, 10GB תעבורה חודשית
  • ממשק ניהול cPanel, תעודת SSL חינם

עכשיו במחיר היכרות:
רק 420 ש"ח לשנה!