שימוש במשתנה לשם עמודה ב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)