日期:2014-05-18  浏览次数:20798 次

在创建sql server2000的存储过程中,带参的输入参数值可否可以传入表名或是列名?
s     偶想创建一个带输入参数的存储过程,参数的传入值是一个表名或是一个字段名称
,就像如下这样,

代码:
create   procedure   pro_book
    @tab_name   varchar(10),   --表名
    @col_name   varchar(10)     --列名
as
      declare   @t   varchar(10)  
      declare   @c   varchar(10)  
      set   @t   =   @tab_name    
      set   @n   =   @col_name

        --更新某一个表的某一字段,使其自增1运算,设计表的数据类型均为int型
      update   @t   set   @t   =   @t   +     1    
go


    bug:

服务器:   消息   137,级别   15,状态   1,过程   pro_udVote,行   10
必须声明变量   '@n '。
服务器:   消息   137,级别   15,状态   1,过程   pro_udVote,行   10
必须声明变量   '@n '。


这样是否可行,如果可以该如何创建?小弟在这谢了~_~!


------解决方案--------------------
declare @sql varchar(1000)

set @sql = 'update ' + @tab_name + ' set ' + @col_name + ' = ' + @col_name + ' + 1 '
exec @sql
------解决方案--------------------
declare @sqltext varchar(512)
select @sqltext = "update "+@t+ " set "+@n+ " = "+@n+ " + 1 "
exec(@sqltext)
if @@error <> 0
begin
goto err
end