首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

问个关于sql2000中关于表的有关问题

2012-01-18 
问个关于sql2000中关于表的问题我声明一个游标用来提取所有用户表的列名变量@mytable用来保存准备提取的表

问个关于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+ ' ' ') ')

热点排行