Тестирование хранимой процедуры в SQL Server - PullRequest
0 голосов
/ 26 августа 2018

Я написал хранимую процедуру для тестирования другой хранимой процедуры, передавая другие параметры и сохраняя количество и время, затраченное на выполнение процедуры, во временной таблице.Процедура лучше, чем функция?

CREATE PROCEDURE [dbo].[SPTEST_NEW] 
AS 
BEGIN
    DECLARE @COUNT INT;
    DECLARE @STARTDATETIME DATETIME;
    DECLARE @ENDDATETIME DATETIME;
    DECLARE @TimeDiff NVARCHAR(50);
    DECLARE @SPNAME VARCHAR(50);

    DECLARE @Result TABLE
                    (
                        Cases NVARCHAR(100),
                        RecordCount INT,
                        ExecutionTime NVARCHAR(50)
                    )
    DECLARE @Search TABLE
                    (
                        ID NVARCHAR(50),
                        NAME NVARCHAR(200),
                        FMT NVARCHAR(100)
                    )

     SET @SPNAME = 'dbo.[SEARCH_VALUE]'; 
     SET @STARTDATETIME = GETDATE();

     --Case#1: Search by All
     INSERT INTO @Search
         EXEC @SPNAME @PRODUCTID = NULL,
                      @PRODUCTNAME = NULL,
                      @FORMAT = NULL

     SET @ENDDATETIME = GETDATE();  
     SELECT @COUNT= @@ROWCOUNT

     SET @TimeDiff = CONVERT(TIME, @ENDDATETIME - @STARTDATETIME);

     INSERT INTO @Result 
     VALUES ('ALL', @COUNT, @TimeDiff)

     -- Case#2 : Search by Product-ID
     INSERT INTO @Search
         EXEC @SPNAME
                   @PRODUCTID = 'ABPROD-BLACK',
                   @PRODUCTNAME = NULL,
                   @FORMAT = NULL,

      SET @ENDDATETIME = GETDATE();
      SELECT @COUNT = @@ROWCOUNT

      SET @TimeDiff = CONVERT(TIME, @ENDDATETIME - @STARTDATETIME);

      INSERT INTO @Result 
      VALUES ('PROD-ID:ABPROD-BLACK', @COUNT, @TimeDiff)

      --Case#3 : Search by FORMAT
      INSERT INTO @Search
          EXEC @SPNAME
                   @PRODUCTID = NULL,
                   @PRODUCTNAME = NULL,
                   @FORMAT = 'SCHT',

      SET @ENDDATETIME = GETDATE();
      SELECT @COUNT= @@ROWCOUNT

      SET @TimeDiff = CONVERT(TIME, @ENDDATETIME - @STARTDATETIME);

      INSERT INTO @Result 
      VALUES ('Format:SCHT', @COUNT, @TimeDiff)

      SELECT * 
      FROM @Result
END

Является ли этот метод правильным?Или любой другой метод?Пожалуйста, предложите метод.

...