使用存储过程动态更新表中的字符串值

时间:2014-07-02 13:22:50

标签: sql sql-server

以下是我在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' 

请告诉我一个解决方案。

先谢谢。

1 个答案:

答案 0 :(得分:1)

您没有设置变量@tid的大小。

执行存储过程时,您确定该变量的内容吗? 尝试放置raiserror(@tid,15,1)并检查该变量的内容。 There are blogs关于不调整varchar变量大小的习惯。

未经验证的varchars的大小也是officially documented