以下是我在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
但表格没有得到更新。我认为问题出在Quotes上(字符串需要引号,对吧?)。 如果我给出静态值,它就会被激活,如:
UPDATE TypeSetupTable SET PLACE_HOLDERS = @ph WHERE complexity = 'Simple' AND Type_Id = 'SSRS'
请告诉我一个解决方案。
先谢谢。
答案 0 :(得分:1)
您没有设置变量@tid
的大小。
执行存储过程时,您确定该变量的内容吗?
尝试放置raiserror(@tid,15,1)
并检查该变量的内容。
There are blogs关于不调整varchar变量大小的习惯。
未经验证的varchars的大小也是officially documented。