שימוש במשתנה לשם עמודה בSQL לא נותן להשוות אליו מספר
-
שלום לחברי הפורום.
יש לי כאן סטור פרוסיגר שהכנסתי לו שמות עמודות כמשתנים,
אני רוצה למיין כל פעם עמודה אחרת , ואם נשלח מספר ב @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)
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות