标题:[求助]建立的表名中,能否用变量
只看楼主
lhj2005
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2007-1-23
 问题点数:0 回复次数:12 
[求助]建立的表名中,能否用变量
如何把变量加到表名中

请高手指导

[此贴子已经被作者于2007-3-19 21:47:10编辑过]

搜索更多相关主题的帖子: 表名 变量 指导 
2007-03-19 18:51
lhj2005
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2007-1-23
得分:0 

declare @i int
set @i=1
while @1<10
begin
create table a@1(
myid int not null,
myname varchar(10),
myadress varchar(50))
set @i=@i+1
end

可以这样吗?

2007-03-19 20:01
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
不可以的.

飘过~~
2007-03-20 08:52
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
得分:0 
用循环重复写建表语句 再提交是可以的

比如
set @i =1
while @i<10
begin
set @sql = 'Create table tbl'+@i +' (myid int not null,my name varchar(10) )'
exec (@sql)
set @i =@i+1
end

2007-03-20 17:47
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
我晕..加进去后是变量了??

飘过~~
2007-03-20 21:53
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
得分:0 
sql中字符型默认是会转换成数字型的,
declare @sql varchar(8000)
declare @i int
select @i =1
while @i<10
begin
set @sql = 'Create table tbl'+cast(@i as varchar) +' (myid int not null,myname varchar(10) )'
print @sql
exec(@sql)
set @i =@i+1
end

26403021 sql群 博客 blog./user15/81152/index.shtml
2007-03-20 22:07
lhj2005
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2007-1-23
得分:0 
set @i =1
while @i<10
begin
set @sql = 'Create table tbl'+@i +' (myid int not null,my name varchar(10) )'
exec (@sql)
set @i =@i+1
end
把@sql声明为varchar(20)为什么会出现:
将 varchar 值 'Create table tbl' 转换为数据类型为 int 的列时发生语法错误。


exec (@sql),这个语句是执行变量的吗?能否解释下

为什么要把@i的数据类型变成字符型?

[此贴子已经被作者于2007-3-20 23:06:29编辑过]

2007-03-20 22:34
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
得分:0 
sql中字符型默认是会转换成数字型的,
declare @sql varchar(8000)
declare @i int
select @i =1
while @i<10
begin
set @sql = 'Create table tbl'+cast(@i as varchar) +' (myid int not null,myname varchar(10) )'
print @sql
exec(@sql)
set @i =@i+1
end 我不是给改了吗

26403021 sql群 博客 blog./user15/81152/index.shtml
2007-03-20 23:16
lhj2005
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2007-1-23
得分:0 

不好意思!还是有点不理解
想提两个问题

1)exec (@sql),这个语句是执行变量的吗?能否解释下
exec(@sql)执行这个语句,等同于直接执行Create table tbl语句吗

2)cast(@i as varchar)
为什么要把@i的数据类型转换成字符型?

2007-03-20 23:23
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
得分:0 
1.exec是用来执行动态sql语句或存储过程,动态语句的优势在于灵活
2.我前面说过sql server中字符串会默认转换成数字,如果不把数字
强制转换为字符串,在发生字符转数字的时候就会出现错误,因为那
里面的字符包含非数字的.

26403021 sql群 博客 blog./user15/81152/index.shtml
2007-03-20 23:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-125216-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.679975 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved