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