到目前为止,我有以下代码:
declare @random int, @upper int, @lower int, @rndtb varchar(20) set @lower = 1 set @upper = 999 select @random = ROUND(((@upper - @lower) * rand() + @lower),0) select @rndtb = '##show'+cast(@random as varchar(20))+''
但这给了我
将varchar值’## show’转换为数据类型int时,转换失败。
我想要实现的是每次执行查询时都创建一个表## show + random number。
例子 :
##show01 ##show78 ##show43
用@bluefeet所说的内容进行编辑,并找到了一种使用以下方法创建表的方法
Declare @SQL VarChar(1000) SELECT @SQL = 'Create Table ' + @rndtb + '(' SELECT @SQL = @SQL + 'ID int NOT NULL Primary Key, FieldName VarChar(10))' Exec (@SQL)
但是如何调用或插入此表?
由于@random要将参数添加到字符串中,因此需要将其强制转换为varchar,以便可以将其串联到字符串部分:
@random
select @rndtb = '##show'+cast(@random as varchar(20))+''
您的完整代码将是:
根据您的编辑,您将需要使用动态sql插入到新表中:
select @SQL = 'insert into '+@rndtb+' select * from yourtable' exec (@sql)