次の問題があります。テーブルの中に 'verylongtext'の列が50文字を超えないように分割する必要があるビューを作成したいとします。 この結果セットはビューで結合する必要があります。 一時テーブルは次のように作成されます:テンポラリテーブルのSQL Serverの回避策
create table #results(id int, string varchar(400))
declare @results table(id int, string varchar(400))
declare @id int
declare @strings varchar(400)
set @id = 0
while exists (select * from roottable where row_id > @id)
begin
select top 1 @id = row_id, @strings = verylongtext from roottable
where row_id > @id
order by row_id asc
insert into #results
select @id, data from dbo.Split([dbo].[DelineateEachNth](@strings, 50, '$'), '$')
end
問題は何も一時テーブルがビューでは許可されていないことはもちろんです。 CTEは、関数の結果セットでは機能しないようです。可能な他の方法はありますか?私は絶対に無知です。前もって感謝します!!
あなたの要件にwhileループを必要としないかもしれません...それはデザインが悪い...直接ビューに収まる選択クエリを必要とするかもしれません。 –
[SQLフィドル] (http://sqlfiddle.com)ので、人々は何かを扱うことができます。 – Lucero