שלח תשובה

זירת השאלות

511
צפיות
10
תשובות

Stored Procedure

,‏ 16 בנובמבר, 2005

שלום,

אני רוצה לכתוב SP שמקבל נתונים של שם טבלה, אימייל וסיסמה.

ה-SP נועד לזהות גולש על פי הנתונים שהזין ברישום למערכת.

הקטע שאני צריך שגם שם הטבלה יהיה דינמי ובכל פעם יגש לטבלה אחרת בדאטא בייס.



איך אני רושם את ה-SP?

תגיות:

10 תשובות

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

    נסה משהו כזה:


    CREATE PROCEDURE [stp_test]    (
        @Table_name     [nvarchar](255)
    )
    AS
    DECLARE @sSQL [nvarchar] (255)

    SET @sSQL = 'SELECT * FROM '+ @Table_name

    exec @sSQL

    GO

    התחביר מתאים ל SQL SERVER, אם אתה עובד על מסד נתונים אחר, עלולים להיות שינויים בתחביר.

  2. talei הגיב:

    אני צריך גם להוסיף Where לשאילתא
    קודם כל תודה.

    אני צריך להוסיף גם שני פרמטרים דינמים: Email ו- Password לשאילתא.

    Select * From Table_Name Where Email='Email' And Password='Password'

    איך הולך התחביר של זה?

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

    באותה הצורה בדיוק…


    CREATE PROCEDURE [stp_test]    (
        @Table_name     [nvarchar](255),
        @Email     [nvarchar](255),
        @Password      [nvarchar](255)
    )
    AS
    DECLARE @sSQL [nvarchar] (255)

    SET @sSQL = 'SELECT * FROM '+ @Table_name +' WHERE Email = '+ @Email +' AND Password = '+ @Password

    exec @sSQL

    GO

  4. talei הגיב:

    אני מקבל הודעת שגיאה שאני קורא ל-SP
    אני קורא ל-SP מתוך קובץ ASP (וגם מתוך ה-Query Analyzer)

    Exec stp_test 'Users','[email protected]','123456'

    מקבל שגיאה:

    Could not find stored procedure 'SELECT * FROM Users WHERE Email = [email protected] AND Password = 123456'

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

    תנסה לקרוא ל exec עם סוגריים:


    EXEC(@sSQL)

  6. talei הגיב:

    עדיין לא עובד
    הוא מתייחס לפרמטרים שאני שולח כאל שם עמודה

    exec stp_test 'Users','[email protected]','123456'

    רושם לי ש[email protected] אינו שם עמודה מוכר.

  7. talei הגיב:

    sp
    CREATE PROCEDURE [sp_CheckUser]    (
        @Table_name     [nvarchar](255),
        @Email     [nvarchar](255),
        @Password      [nvarchar](255)
    )
    AS
    DECLARE @sSQL [nvarchar] (255)

    SET @sSQL = 'SELECT * FROM '+ @Table_name +' WHERE Email = '+ @Email +' AND Password = '+ @Password

    exec (@sSQL)

    GO

    exec sp_CheckUser 'Users','[email protected]','123456'

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

    קודם כל, כאשר אתה מציג קוד
    או אנגלית בפורום, ישר אותו לשמאל.
    יש אייקון של ישור לשמאל ליד האייקון של ה A עם הפס האדום מתחתיו.

    דבר שני, נראה לי שעליתי על הבעיה. נסה כך:

    CREATE PROCEDURE [sp_CheckUser]    (
        @Table_name     [nvarchar](255),
        @Email     [nvarchar](255),
        @Password      [nvarchar](255)
    )
    AS
    DECLARE @sSQL [nvarchar] (255)

    SET @sSQL = 'SELECT * FROM '+ @Table_name +' WHERE Email = "'+ @Email +"' AND Password = '+ @Password

    exec (@sSQL)

    GO


    אם ה password הוא מספרי, אתה יכול לשנות את ה data_type של המשתנה. אם הוא מחרוזת, עשה לו את אותו הדבר שעשיתי ל email.

  9. talei הגיב:

    עובד מצוין – תודה רבה על כל העזרה

שלח תשובה