我有一个存储过程,我将两个参数传递给。一个参数是表值参数,另一个参数是nvarchar。这是存储过程:
ALTER PROCEDURE [dbo].[_sp_TestProc]
@P1 As [dbo].[FileIdTableType] Readonly,
@P2 As NVARCHAR (MAX)
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT [Field1], [Field2], [Field3]
FROM [MyTable] WHERE [Field1] IN (@P1)
AND [Field2] IN (@P2)
END
从代码中,我将我的DataTable作为@ P1传递,并将一串值作为@ P2看作"'Value1', 'Value2', 'Value3', 'Value4'"
这是@ P2导致我的问题。表类型工作正常。通常在我的存储过程中使用这样的参数时,我在内部创建一个字符串,用参数格式化我的字符串,然后调用sp_executeSql来运行查询。但是,使用表值参数时,这将不起作用。
有没有人知道如何使用表值参数以及像这样的nvarchar?我确定在尝试正确格式化时,我遗漏了一些简单的东西。 谢谢,
-Scott