我在Query中使用以下代码来更新名为ListClientCasePresentingIncidents的表,该表使用名为fnSplit的函数来拆分名为@CasePresentingIncidents的逗号分隔的nvarchar。
IF ( @CasePresentingIncidents <> '' )
INSERT INTO ListClientCasePresentingIncidents
( PresentingIncident ,
CaseID
)
SELECT SplitText AS PresentingIncident ,
@CaseID
FROM fnSplit(@CasePresentingIncidents)
所有这一切都能很好地记录一条记录,传递@CaseID和@CasePresentingIncidents的值。
问题是,如何修改此代码以便从名为ClientCase的表而不是2个参数中获取值?它需要使用ClientCase.CaseID和ClientCase.CasePresentingIncidents中的值替换@CaseID和@CasePresentingIncidents。非常感谢。
答案 0 :(得分:2)
基本上,我可以看到两种解决方法:
将要处理的所有ClientCase.CasePresentingIncidents
值组合(连接)到一个字符串中,并将其作为参数传递给fnSplit()
(即dbo.fnSplit()
?)。根据您使用的SQL Server版本,您可能会考虑不同的连接方式。如果你在这里需要一些指导,我认为这可能是一个很好的起点:Concatenating Row Values(有很多类似的问题,并在相关章节中相应列出。)
使用光标为dbo.fnSplit()
的每一行调用ClientCase
。我应该建议创建一个新的表值函数dbo.fnSplitMultiple()
来实现这种方法。在您的示例中,您可以选择dbo.fnSplitMultiple()
而不是dbo.fnSplit()
。
如果结果字符串可能很长,那么第一种方法虽然可能更有吸引力但可能不太合适。我在使用SP和函数处理非常长的服务器端方面没有太多经验,所以我不确定,对我来说这里的游标只是一个备份选项。