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

问个关于sql2000中关于表的问题
我声明一个游标     用来提取所有用户表的列名
变量@mytable   用来保存准备提取的表的名字
declare   fetch_mycolunmsname   cursor   local   scroll  
    for  
      select   mycolunmsname   from   object_id(@mytablename)

提示对象名   'object_id '   无效

要是这么写  
declare   fetch_mycolunmsname   cursor   local   scroll  
    for  
      select   mycolunmsname   from   @mytablename
就提示必须声明变量@mytablename
但是   我在开始就声明过了


就是说我怎么用变量来存储表名     因为我们平时写的语句几乎都是已经指定了一个表名如:select   *   from   table_a
如果表明在不断的变化     那该怎么写??????

------解决方案--------------------
declare @mytablename varchar(100)
set @mytablename= 'ACBOM '
exec( 'select * from '+@mytablename)
------解决方案--------------------
用存储过程吧:
create procedure p_1(@tbname varchar(100))
as
begin
select name from syscolumns where object_id(@tbname)=id order by colorder;
end
------解决方案--------------------
create table tab(ID int,NAME varchar(10))
insert tab
select 1, '张三 '
union all
select 2, '李四 '
declare @mytablename varchar(100)
set @mytablename= 'tab '
exec( 'select * from '+@mytablename)
drop table tab
------解决方案--------------------

(2 行受影响)
ID NAME
----------- ----------
1 张三
2 李四


(2 行受影响)

------解决方案--------------------
select mycolunmsname from object_id(@mytablename)

改為這個呢

exec( 'select mycolunmsname from object_id( ' ' '+@mytablename+ ' ' ') ')