我有一个存储过程,我将两个参数传递到其中。一个参数是表值参数,另一个是 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 ?我确定我在尝试正确格式化时遗漏了一些简单的东西。谢谢,
-斯科特