דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. שימוש במשתנה לשם עמודה בSQL לא נותן להשוות אליו מספר

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

מתוזמן נעוץ נעול הועבר ארכיון code613m
3 פוסטים 2 כותבים 407 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • י מנותק
    י מנותק
    יאן גולד
    כתב ב נערך לאחרונה על ידי
    #1

    שלום לחברי הפורום.

    יש לי כאן סטור פרוסיגר שהכנסתי לו שמות עמודות כמשתנים,
    אני רוצה למיין כל פעם עמודה אחרת , ואם נשלח מספר ב @NUMBER אז לסנן איפה שהעמודה שווה למספר

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [dbo].[GetValues]
      @Name VARCHAR(150),
      @Number int 
    AS
    If @Number is NULL
    BEGIN
      SET NOCOUNT ON;
    
      DECLARE @sql NVARCHAR(MAX);
    
      SET @sql = N'SELECT * FROM reservations order by ' + @Name 
    
      EXEC sp_executesql @sql;
    END
    
    ELSE
    
    BEGIN
      SET NOCOUNT ON;
    
      DECLARE @sql2 NVARCHAR(MAX);
    
      SET @sql2 = N'SELECT  *  FROM reservations where ' +@Name +' = ' +@Number + 'order by ' +@Name
    
      EXEC sp_executesql @sql2;
    END
    

    הבעיה היא שבהתחלה הגדרתי את המשתנה של העמודה כ VARCHAR ועכשיו הוא לא נותן לי להשוות אליו INT

    אפילו שאם הייתי כותב פשוט

    select * from reservations where client_id = 6
    

    זה כן היה עובד, אבל אחרי שהגדרתי כאן את השם עמודה במפורש כ VARCHAR זה נותן שגיאה

    Conversion failed when converting the nvarchar value 'SELECT  *  FROM reservations where client_id = ' to data type int.
    

    פורסם במקור בפורום CODE613 ב11/01/2016 15:41 (+02:00)

    תגובה 1 תגובה אחרונה
    0
    • S מנותק
      S מנותק
      softs
      כתב ב נערך לאחרונה על ידי
      #2

      א. שנה את העמודה ל INT אם היא מכילה רק ספרות
      ב.

      SET @sql2 = N'SELECT  *  FROM reservations where ' +@Name +' = ' + CAST(@Number  AS NVARCHAR)+ 'order by ' +@Name
      

      פורסם במקור בפורום CODE613 ב11/01/2016 22:02 (+02:00)

      תגובה 1 תגובה אחרונה
      1
      • י מנותק
        י מנותק
        יאן גולד
        כתב ב נערך לאחרונה על ידי
        #3

        softs...

        חיכיתי לתשובה שלך !

        פורסם במקור בפורום CODE613 ב12/01/2016 01:33 (+02:00)

        תגובה 1 תגובה אחרונה
        1

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום