CREATE PROCEDURE up_updateimage 
    @TableName  varchar(20),
    @ColumnName image,
    @Id numeric(32)
AS
exec('update '+@TableName+' set photo = '+@ColumnName+' where zj = '+@id)
GO

解决方案 »

  1.   

    楼上写的可以通过语法检测,但好象不能用。
    我给了三个参数,第一个是表名,第二个是字段值,第三个是条件id
    为了方便测试,我把image列改为varchar(20)
    CREATE PROCEDURE up_updateimage 
        @TableName  varchar(20),
        @ColumnName varchar(20),
        @Id numeric(32)
    AS
    exec('update '+@TableName+' set photo = '+@ColumnName+' where zj = '+@id)GO调用:
    exec up_updateimage "image","内容",1执行的时候总提示:列名 '内容' 无效,可内容不是列名,而是列名的值,怎么会提示这个呢,是不是这个存储过程有问题呢,但好象看着没什么问题,请高手指点
      

  2.   

    按照你的意思重写一下。
    CREATE PROCEDURE up_updateimage 
        @TableName  varchar(20),
        @ColumnName varchar(20),--这里容易引起误会,使用@ColumnValue应该好点。
        @Id numeric(32)
    AS
    exec('update '+@TableName+' set photo = '''+@ColumnName+''' where zj = '+convert(varchar,@id))GO调用:
    exec up_updateimage 'image','内容',1