Sql server 传递表类型以选择存储过程并使用LIKE
我以前从未使用过表格类型。我想将表类型dn\U test1\U typex中的值传递给一个存储过程,该存储过程选择喜欢的位置。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
有可能吗?内部连接方法在我的数据库上非常慢。
(我预计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
。会话和存储过程之间不共享该表;您必须显式地声明、填充和传递它。