Отладка хранимой процедуры с определенным пользователем типом данных - PullRequest
2 голосов
/ 12 апреля 2011

Можно ли отладить хранимую процедуру с определенным пользователем типом данных в качестве параметра?

Редактировать: какой синтаксис для его вызова? (exec ....)

Мой тип:

CREATE TYPE [dbo].[FacturaInspeccion] AS TABLE(  
    [sIdServicio] [nvarchar](3) NOT NULL,  
    [nIdTipoInspeccion] [int] NOT NULL,  
    [sIdTipoMotivoInspeccion] [nvarchar](2) NOT NULL,  
    [nIdTipoVehiculo] [int] NOT NULL,  
    [nBase] [real] NOT NULL,  
    [nNoPeriodica] [real] NULL,  
    [nTarifaConProyecto] [real] NULL,  
    [nTarifaSinyecto] [real] NULL,  
    [nTasaTrafico] [real] NULL,  
    [nDescuento] [real] NULL,  
    [nTotal] [float] NULL  

)
GO

Ответы [ 3 ]

5 голосов
/ 14 апреля 2011

Я понял, что это просто таблица, поэтому я объявил тип, вставил значения и вызвал хранимую процедуру.

Объявление процедуры хранения:

СОЗДАНИЕ ПРОЦЕДУРЫ [dbo]. [SpInsertarFactura]
@tableFacturaInspeccion FacturaInspeccion READONLY,
...

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

USE [DATABASE] GO
ОБЪЯВИТЬ @return_value int

ОБЪЯВИТЬ @tablaTmp FacturaInspeccion

INSERT INTO @tablaTmp (sIdServicio, nIdTipoInspeccion, sIdTipoMotivoInspeccion, nIdTipoVehiculo, nBase, nNoPeriodica, nTarifaConProyecto, nTarifaSinyecto, nTasaTrafico, nDescuento, nTotal)
ЗНАЧЕНИЯ (79, 1, '00', 1, 2, 2, 2, 2, 2, 10, 100)

EXEC @return_value = [dbo]. [SpInsertarFactura]

И после этого время для отладки.

2 голосов
/ 12 апреля 2011

Да, вы можете отладить его в обычном режиме, но, к сожалению, вы не можете получить хорошее представление о данных в TVP.

См. Следующие элементы Microsoft Connect для получения дополнительной информации (ипроголосуйте, если хотите получить лучшую поддержку для отладки TVP;)).

1 голос
/ 14 апреля 2011

Позвольте мне предложить вам добавить переменную отладки во входные переменные (по умолчанию 0), а затем, когда вы хотите протестировать SP, вы устанавливаете отладку на 1 и можете запускать запросы данных в тестовом режиме. Например, вы можете добавить строку с надписью

IF @debug = 1 Begin Select * из @tableFacturaInspeccion END

Это позволило бы вам увидеть, что данные, которые вы хотели иметь для ввода, - это то, что вы предполагали использовать в качестве примера. Или, если вы выполняете более сложный запрос с объединением как частью вставки, вы можете увидеть этап выбора в режиме отладки и откатить все вставки, пока вы выясняете, как правильно выполнить процедуру. Я всегда включаю отладочную или тестовую переменную во что-нибудь сложное, потому что я хочу иметь возможность смотреть на вещи в разные моменты времени в процедуре отладки. И пока я не знаю, что это правильно, я хочу, чтобы любые действия были отменены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...