Sql server 传递表类型以选择存储过程并使用LIKE

Sql server 传递表类型以选择存储过程并使用LIKE,sql-server,Sql Server,我以前从未使用过表格类型。我想将表类型dn\U test1\U typex中的值传递给一个存储过程,该存储过程选择喜欢的位置。 有可能吗?内部连接方法在我的数据库上非常慢。 (我预计sp将生产:xxxpifxxx-volion-nax) 多谢各位 程序dn_xx GO /****** Object: StoredProcedure [dbo].[dn_xxx] Script Date: 6/19/2018 12:43:35 PM ******/ SET ANSI_NULLS ON GO

我以前从未使用过表格类型。我想将表类型dn\U test1\U typex中的值传递给一个存储过程,该存储过程选择喜欢的位置。
有可能吗?内部连接方法在我的数据库上非常慢。
(我预计sp将生产:xxxpifxxx-volion-nax)
多谢各位

程序dn_xx

GO
/****** Object:  StoredProcedure [dbo].[dn_xxx]    Script Date: 6/19/2018 12:43:35 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[dn_xxx]
(
    @TableVar dn_test1_typexy READONLY
)
AS
BEGIN
SET NOCOUNT ON;

   SELECT  * FROM dn_test2
   WHERE col1a like(not IN) (SELECT col1 from @TableVar)

END
表dn_test2

 INSERT INTO dn_test2(col1a,col2a,col3a)
    VALUES ('xxxpifxxx','volion','nax'),
        ('der','ter','byt')      

表类型dn\U test1\U typex

DECLARE @TableVar dn_test1_typexy

    INSERT INTO @TableVar(col1,col2,col3)
    VALUES ('pif','ion','frt'),
        ('rik','def','bui') 


exec dn_xx @TableVar  >>>    This is not permitted when the subquery follows =, !=, <, <= , >, >=
DECLARE@TableVar dn\u test1\u typexy
插入@TableVar(col1、col2、col3)
值('pif'、'ion'、'frt'),
(‘rik’、‘def’、‘bui’)
exec dn_xx@TableVar>>>当子查询后跟=、!=、时,不允许这样做=

EXEC dn_xxx@MyTable
。请参阅。您不能在@TableVar中插入id
插入@TableVar(id,col1,col2,col3)值('pif','ion','frt')
但是,您正在子查询中选择id:
其中id in(从@TableVar中选择id)
变量的名称现在是
@TableVar
,所以
EXEC dn\u xxx@TableVar
。关键是,调用存储过程而不指定参数只会传递表的
NULL
。会话和存储过程之间不共享该表;您必须显式地声明、填充和传递它。