我有一个用户定义的表类型
// Shallow copy
var copy = jQuery.extend({}, json);
// Deep copy
var copy= jQuery.extend(true, {}, json);
我在存储过程中将该表作为输入参数(它包含字符串列表)
create TYPE [dbo].[AddressList] AS TABLE (
[Address] [NVARCHAR](MAX) not null
);
我想迭代它
例如,我的数据库中有一个表create PROCEDURE [dbo].[SP_ScanAddress]
@list AddressList READONLY
AS
BEGIN
-- need to iterate it here
END
,如果我的输入中的地址存在于数据库中,那么我想在一次调用中返回Address
其他Status=1
。所以它应该返回
Status=0
某种......
答案 0 :(得分:2)
嗯,实际上你不需要任何循环。
您可以简单地从表变量连接到数据库表,如果没有匹配则返回0,否则返回1.
类似的东西(这里column_you_need
表示你的表中要保存要比较的地址的列):
select
T.Address,
case when T1.column_you_need is null then 0 else 1 end as Status
from @list as T
left outer join Address as T1 on T.Address = T1.column_you_need