TVP没有返回记录集

时间:2018-05-10 20:47:34

标签: sql-server tsql table-valued-parameters

这是我第一次尝试将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

0 个答案:

没有答案
相关问题