sql server中的多个游标出现问题
我有一张有四张牌的桌牌sql server中的多个游标出现问题,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一张有四张牌的桌牌 阿根蒂德 执照号码 权限线 管辖权 假设我有一条记录具有以下值 AgentId=307 执照号码=245678 Lineof Authority=“牙科服务、个人热线、伤员” 辖区=“阿拉巴马州,纽约州” 同样,我在这个表中还有其他不同值的记录 请注意,权限行和辖区行包含多个由逗号“,”分隔的值 如果我将参数传递为 @AgentId=307 @权限行=“伤亡” @管辖权=“纽约” 那么输出应该是 执照号码=245678 我有如下的存储过程 ALTER PR
- 阿根蒂德
- 执照号码
- 权限线
- 管辖权
- AgentId=307
- 执照号码=245678
- Lineof Authority=“牙科服务、个人热线、伤员”
- 辖区=“阿拉巴马州,纽约州”
- @AgentId=307
- @权限行=“伤亡”
- @管辖权=“纽约”
ALTER PROCEDURE [dbo].[prLicenceFetchForAgentId]
@LineOfAuthority nvarchar(max),
@Jurisdiction nvarchar(max),
@AgentId int
AS
Create table #tbLOA (
LOA nvarchar(max)
);
create table #tbtempJuris(
Jurisdiction nvarchar(max)
);
Insert into #tbLOA(LOA) Select LineOfAuthority from tbLicence where AgentId =@AgentId;
Insert into #tbtempJuris(Jurisdiction) Select Jurisdiction from tbLicence where AgentId =@AgentId;
DECLARE @LOASubString varchar(100);
DECLARE @JurisdictionSubString varchar(100);
-- first cursor
DECLARE @MyCursor CURSOR
SET @MyCursor = CURSOR FAST_FORWARD
FOR
Select LOA FROM #tbLOA
OPEN @MyCursor
FETCH NEXT FROM @MyCursor
INTO @LOASubString
WHILE @@FETCH_STATUS = 0
BEGIN
-- second cursor
DECLARE @MyCursor2 CURSOR
SET @MyCursor2 = CURSOR FAST_FORWARD
FOR
Select LOA FROM #tbLOA
OPEN @MyCursor2
FETCH NEXT FROM @MyCursor2
INTO @JurisdictionSubString
WHILE @@FETCH_STATUS = 0
BEGIN
--second code
if(@LOASubString = @LineOfAuthority and @JurisdictionSubString = @Jurisdiction)
begin
Select LicenceNumber from tbLicence where LineOfAuthority = @LOASubString
and Jurisdiction=@JurisdictionSubString and AgentId =@AgentId;
break;
end
FETCH NEXT FROM @MyCursor2
INTO @JurisdictionSubString
END
CLOSE @MyCursor2
DEALLOCATE @MyCursor2
--end cursor 2
FETCH NEXT FROM @MyCursor
INTO @LOASubString
END
CLOSE @MyCursor
DEALLOCATE @MyCursor
现在我无法得到正确的结果。。。它没有显示任何许可证号码。。。
请帮帮我 首先,在一列中包含多个值是反对数据库设计的第一种正常形式,应该不惜一切代价避免 其次,我不明白你到底在用两个嵌套的游标做什么 这似乎是一个非常简单的
SELECT
语句:
SELECT
LicenceNumber
FROM
dbo.tbLicence
WHERE
AgentId = @AgentId
AND LineOfAuthority LIKE '%' + @LineOfAuthority + '%'
AND Jurisdiction = LIKE '%' + @Jurisdiction + '%';
你完全正确,先生。。。实际上,在一列中包含多个值的想法不是我的想法。这是另一个麻风病人做的。。。非常感谢,先生。。。