Это моя хранимая процедура
[sp_Get_Data]
(
@IdParam INT,
@OrderBy varchar(50),
@Direc varchar(4),
)
AS
BEGIN
select
[LogID] //int
,[Address] //varchar
,[State] //varchar
,[City]
,[Zip]
FROM LogData
WHERE IdParam = LogID
order by
CASE @Direc
WHEN 'desc' THEN
CASE @OrderBy
WHEN 'LogID' THEN LogID
WHEN 'Address' THEN Address
END
END
DESC,
CASE @Direc
WHEN 'asc' THEN
CASE @OrderBy
WHEN 'LogID' THEN LogID
WHEN 'Address' THEN Address
END
END
EXEC [sp_Get_Data] @IdParam ='..' @OrderBy = 'LogID', @Direc = 'asc' // WORKS FINE
EXEC [sp_Get_Data] @IdParam ='..' @OrderBy = 'Address', @Direc = 'asc'
Ошибка:
Не удалось выполнить преобразование при преобразовании значения varchar 'xyz' в тип данных int.
Вместо использования этих динамических параметров для сортировки, если я передам
ORDER BY Address ASC ....
это работает.
Есть ли что-то очень простое, что мне здесь не хватает?
sp_
для своих хранимых процедур. Microsoft зарезервировала этот префикс для собственного использования, и вы рискуете столкнуться с конфликтом имен в будущем. Лучше просто избегатьsp_
и использовать в качестве префикса что-то другое - или вообще не использовать префикс! - person marc_s   schedule 25.01.2013