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

しかし、どうすればこのテーブルを呼び出したり、挿入したりできますか?

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

動的 SQL が必要です

動的 SQL の呪いと祝福

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

于 2013-02-07T19:34:24.413 に答える
0

これを使って:

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