变量中的变量问题
想动态的创建表,其中表的表名,字段名,字段类型,长度都是通过变量传进来的(创建的表最多有12个字段,实际字段数由 @length 变量传进来)
--@tableName 表名
--@length 表的字段数
--@Name1 第一个字段名
--@keyType1 第一个字段类型
--@keySize1 第一个字段长度
--@Name2,NameX 以此类推
create procedure addDepartment
(@tableName varchar(50),
@length tinyint, --字段数
@Name1 varchar(20)=null,@keyType1 tinyint=null,@keySize1 tinyint=null,
@Name2 varchar(20)=null,@keyType2 tinyint=null,@keySize2 tinyint=null,
@Name3 varchar(20)=null,@keyType3 tinyint=null,@keySize3 tinyint=null,
. --最多有12 个
.
.
.
.
.
)
declare @createTabStr varchar(8000)
select @createTabStr='create table'+@tableName
--以下语句在Sql中是有错误的,怎样才能实现类似的功能?
declare @i int
set @i=1
while @i<length
begin
select @createTabStr=@createTabStr+'('+@Name+@i --以下省略,问题就出在 @Name +@i 怎么样才能代表 @Name1或@ Name2呢。)
.
.
.
.
.
@i=@i+1
end
exec(@createTabStr)
好像 Sql没有这种功能啊,在 c# 里面是很容易实现的,Sql里又没有数组,郁闷。