732
צפיות
צפיות
2
תשובות
תשובות
יש לי בעיה store procedure
יש לי דף כניסה למורשים (שם וסיסמא) כתוב ב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 תשובות
אז ככה:
קודם כל, הקריאה ל sp לא נכונה.
לא צריך לציין את שם המשתנה. הדרך הנכונה תהיה כזו:
strSQL = "EXEC check_admin '"& StrUserName &"'"
(אין הבדל משמעותי בין exec ל execute במקרה הזה, לכן עדיף להשתמש במה שיותר קצר…)
דבר שני, אין טעם לשלוף את כל השדות בטבלה במצב שרק רוצים לבדוק אם יש רשומה שעונה על התנאי. במצב כזה עדיף להשתמש ב exsist או ב count.
דבר שלישי, אין טעם לפתוח recordset עם Cursor Type 3, כאשר אפשר לפתוח אותו עם Cursor Type 0, שהוא יותר יעיל. במידה ורוצים לדעת מה מספר הרשומות שעונות על התנאי, צריך להשתמש ב count ב sp עצמה.
תודה רבה! הצליח!!!