#sql #sql-server
#sql #sql-сервер
Вопрос:
Ниже приведена моя хранимая процедура для обновления столбца в SQL SERVER
ALTER PROCEDURE [dbo].[AspPageUpdate]
(@type varchar(50),@comp varchar(50),
@place varchar(50))
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tid varchar;
DECLARE @ph int;
SET @ph = CAST(@place AS int);
select @tid = Type_Id
from TypeTable
where Type_Name = @type
UPDATE TypeSetupTable
SET PLACE_HOLDERS = @ph
WHERE complexity = @comp
AND Type_Id = @tid
END
Но таблица не обновляется. Я думаю, что проблема в кавычках (строки должны быть в кавычках, верно?).
Если я даю статические значения, это выполняется, например:
UPDATE TypeSetupTable SET PLACE_HOLDERS = @ph WHERE complexity = 'Simple' AND Type_Id = 'SSRS'
Пожалуйста, подскажите мне решение.
Заранее спасибо.
Комментарии:
1. Вы преобразуете строку в целое число? Вы получили какую-либо ошибку?
2. Обновление? Где вы узнали это слово?
3. Вы определили
@tid
как односимвольнуюvarchar
переменную. Только первый символ, который вы загружаете изTypeTable
, будет сохранен и использован вUPDATE
инструкции4. Спасибо. После присвоения размера @tid. это работает нормально.. Большое спасибо..
Ответ №1:
вы не установили размер переменной @tid
.
Уверены ли вы в содержимом этой переменной при выполнении хранимой процедуры? Попробуйте поставить raiserror(@tid,15,1)
и проверить содержимое этой переменной. Есть блоги о привычке не изменять размер переменных varchar.
Также официально задокументировано, что размер переменных без изменения размера равен 1.