3

到目前为止,我有这个代码:

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+随机数。

例子 :

##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)

但是如何调用或插入此表?

4

3 回答 3

1

由于要将参数添加@random到字符串,因此需要将其转换为 varchar,以便可以将其连接到字符串部分:

select @rndtb = '##show'+cast(@random as varchar(20))+''

您的完整代码将是:

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))+''

根据您的编辑,您将需要使用动态 sql 插入新表:

select @SQL = 'insert into '+@rndtb+'
        select *
        from yourtable'


exec (@sql)
于 2013-02-07T17:05:48.850 回答
0

用这个:

select @rndtb = '##show'+CONVERT(VARCHAR(20), @random, 0)
于 2013-02-07T17:08:03.743 回答
0

您需要动态 SQL

动态 SQL 的祸与福

http://www.sommarskog.se/dynamic_sql.html

于 2013-02-07T19:34:24.413 回答