Бесконечный цикл в хранимой процедуре MS Sql

Всем привет. Помогите пожалуйста довести до ума хранимую процедуру. Задание: написать хранимую процедуру, вставляющую 5 новых строк в таблицу «Издательства. Та процедура, которая у меня получилась, добавляет данные до бесконечности. Таблица:

CREATE TABLE [dbo].[Издательство](
[Код_Издательства] [INT] PRIMARY KEY NOT NULL,
[Название] [VARCHAR](50) NOT NULL,
[Руководитель] [VARCHAR](50) NULL,
[Город] [VARCHAR](30) NULL,
[Телефон] [VARCHAR](15) NULL);

Процедура:

CREATE PROCEDURE [dbo].[resetdata]
@Название VARCHAR (50),
@Руководитель VARCHAR (50),
@Город VARCHAR (30),
@Телефон VARCHAR (15);
@Num  INT
AS
IF @Num <> 0
WHILE @Num > 0
BEGIN
INSERT INTO Издательство (Название, Руководитель, Город, Телефон)
VALUES('1','2','3','4')
END;

Вызов хранимой процедуры:

EXEC dbo.resetdata @Num=5, @Название='F', @Руководитель='L', @Город= '12345', 
@Телефон='1253666'

Ответы (1 шт):

Автор решения: Yitzhak Khabinsky

Пожалуйста, попробуйте следующее решение.

Нет необходимости использовать какой-либо цикл.

SQL

USE tempdb;
GO

DROP TABLE IF EXISTS dbo.Издательство;

CREATE TABLE dbo.Издательство  (
    Код_Издательства INT IDENTITY PRIMARY KEY,
    Название NVARCHAR(50) NOT NULL,
    Руководитель NVARCHAR(50) NULL,
    Город NVARCHAR(30) NULL,
    Телефон VARCHAR(15) NULL
);
GO

DROP PROCEDURE IF EXISTS dbo.resetdata;
GO

CREATE PROCEDURE dbo.resetdata
    @Название NVARCHAR (50),
    @Руководитель NVARCHAR (50),
    @Город NVARCHAR (30),
    @Телефон VARCHAR (15)
AS
BEGIN
SET NOCOUNT ON;

;WITH rs AS
(
    SELECT @Название AS Название, @Руководитель AS Руководитель, @Город AS Город, @Телефон AS Телефон
)
INSERT INTO Издательство (Название, Руководитель, Город, Телефон)
SELECT Название, Руководитель, Город, Телефон 
FROM rs
CROSS JOIN (
SELECT * FROM (VALUES (1), (2), (3), (4), (5)) AS t(c)) v;
END
GO

EXEC dbo.resetdata @Название=N'TASS', @Руководитель=N'Леонид', @Город= N'Рязань', @Телефон='1253770'

-- test
SELECT * FROM Издательство;

Output

+------------------+----------+--------------+--------+---------+
| Код_Издательства | Название | Руководитель | Город  | Телефон |
+------------------+----------+--------------+--------+---------+
|                1 | TASS     | Леонид       | Рязань | 1253770 |
|                2 | TASS     | Леонид       | Рязань | 1253770 |
|                3 | TASS     | Леонид       | Рязань | 1253770 |
|                4 | TASS     | Леонид       | Рязань | 1253770 |
|                5 | TASS     | Леонид       | Рязань | 1253770 |
+------------------+----------+--------------+--------+---------+
→ Ссылка