親テーブルに10Kの名前を挿入しようとしています。しかし、最初の千だけを書く管理。私はあなたの目が私がどこに失敗しているかを見る必要があります。私はそれが増えていないが、なぜ分からないのか理解している。SQL:whileループwhileループ
DECLARE @TempNameTable table (ID int , Name varchar (50))
DECLARE @i int = 1,
@tempNameValue varchar(50),
@randNumber int = 1
INSERT INTO @TempNameTable VALUES
(1,'Jonas'), (2,'Petras'),(3,'Antanas')
, (4,'Stasys'), (5,'Dainius'), (6,'Giedrius')
, (7,'Mindaugas'), (8,'Povilas'), (9,'Kestutis')
, (10,'Darius')
WHILE ((SELECT COUNT(Name) FROM Parent) < 10000)
BEGIN
WHILE @i < 11
BEGIN
SET @tempNameValue = CASE
WHEN @i = 1 THEN
(SELECT Name from @TempNameTable WHERE ID = @i)
WHEN @i = 2 THEN
(SELECT Name from @TempNameTable WHERE ID = @i)
WHEN @i = 3 THEN
(SELECT Name from @TempNameTable WHERE ID = @i)
WHEN @i = 4 THEN
(SELECT Name from @TempNameTable WHERE ID = @i)
WHEN @i = 5 THEN
(SELECT Name from @TempNameTable WHERE ID = @i)
WHEN @i = 6 THEN
(SELECT Name from @TempNameTable WHERE ID = @i)
WHEN @i = 7 THEN
(SELECT Name from @TempNameTable WHERE ID = @i)
END
WHILE @randNumber < 1000
BEGIN
INSERT INTO Parent VALUES
(@tempNameValue + CAST(@randNumber as varchar(1000)))
SET @randNumber = @randNumber + 1
END
SET @i = @i + 1
END
END
クエリが同じ場合はなぜCASEを使用しますか?あなたの@i変数は、異なる条件を保証します –
使用しているdbmsにタグを付けます(おそらくSQL Server?)そのコードはANSI SQL準拠とはまったく異なります。 – jarlh
私はSQLサーバーを使用しています。 – LTnewbie