Это первый раз, когда я пытаюсь использовать TVP для SQL Server.Я использую SQL Server 2016 Developer Edition.
Вот мой пользовательский тип и пример хранимой процедуры:
CREATE TYPE [dbo].[TranslateListOne] AS TABLE (TestOne INT)
CREATE PROCEDURE Translator_SaveTextToSQLOne
(@TranslatorListOne TranslateListOne READONLY)
AS
SELECT *
FROM @TranslatorListOne
Для отладки я запускаю SQL Server Profiler.Вот вывод:
declare @p3 dbo.TranslateListOne
insert into @p3 values(5)
insert into @p3 values(3)
exec sp_executesql N'Translator_SaveTextToSQLOne',N'@TranslatorListOne [TranslateListOne] READONLY',@TranslatorListOne=@p3
Когда я запускаю SQL Server Profiler в новом окне запроса, он должен отобразить таблицу @TranslatorListOne
.Ничего не выводится, и я тоже не получаю ошибку.Перед вызовом exec sp_executesql
, если вы добавите
select * from @p3
Таблица заполнена правильно перед вызовом хранимой процедуры.Чего мне не хватает?
ОБНОВЛЕНО
Я использую asp.net для вызова хранимой процедуры.Чего мне не хватает в этом коде?Я не возвращаю записи, которые я отправляю.
Dim dbMain As New SqlConnection(GetConnection)
Dim rsReader As SqlDataReader
Dim cmd As New SqlCommand("Translator_SaveTextToSQLOne", dbMain)
Dim myTable As New DataTable
myTable.Columns.Add("TestOne", GetType(Integer))
myTable.Rows.Add(5)
myTable.Rows.Add(3)
Dim myParam As New SqlParameter("@TranslatorListOne", SqlDbType.Structured)
myParam.TypeName = "TranslateListOne"
myParam.Value = myTable
cmd.Parameters.Add(myParam)
dbMain.Open()
rsReader = cmd.ExecuteReader
While rsReader.Read
'Read the rows
End While