这个存储过程应当怎样写?
数据库拥有a1到an个用户,系统为每个用户都建一个table_1表,各table_1的结构相同,那么每位用户的table_1表全名为ax(x=1 to n).table_1
现在在存储过程中要对每个用户的table_1表操作。
先声明一个变量用于保存用户名
Declare @opid varchar(10)
然后用游标不断地把用户名赋给@opid。
再用select * from @opid.table_1操作每个用户的table_1表。
但是查询分析器提示说‘select * from @opid.table_1’这行语句‘Incorrect syntax near '.'’
请教这行语句应当怎么写?
问题点数:50、回复次数:6Top
1 楼vinsonshen(为了明天)回复于 2005-01-05 15:48:19 得分 20
exec ('select * from '+@opid.table_1+'')Top
2 楼NinGoo(http://www.NinGoo.net)回复于 2005-01-05 15:48:36 得分 10
不需要游标
declare @n varchar(10)
declare @an varchar(10)
declare @sql varchar(1000)
set @n=1
while @n<N --这里N为你的用户的个数
begin
set @an='a'+@n
set @sql='select * from '+ @a+'.table_1
exec (@sql)
end
Top
3 楼wanyingsong(豌豆)回复于 2005-01-05 15:48:48 得分 10
用动态语句,exec('select * from '+@tablename)Top
4 楼vinsonshen(为了明天)回复于 2005-01-05 15:48:51 得分 10
exec ('select * from '+@opid+'.table_1')
Top
5 楼NinGoo(http://www.NinGoo.net)回复于 2005-01-05 15:50:20 得分 0
有点小错误,呵呵
declare @n varchar(10)
declare @an varchar(10)
declare @sql varchar(1000)
set @n=1
while @n<10 --这里N为你的用户的个数
begin
set @an='a'+@n
set @sql='select * from '+ @an+'.table_1'
exec (@sql)
set @n=@n+1
end
Top
6 楼JetJack(喷气引擎)回复于 2005-01-05 16:20:23 得分 0
还有一个问题如果是下列语句
select * from a1.table_1 where bm='11' and date between '2004-01-01' and '2004-01-31'按上面的方法应怎么写?Top




