SQL Server插入查询帮助

时间:2010-10-28 18:33:00

标签: sql-server insert

我在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。非常感谢。

1 个答案:

答案 0 :(得分:2)

基本上,我可以看到两种解决方法:

  1. 将要处理的所有ClientCase.CasePresentingIncidents值组合(连接)到一个字符串中,并将其作为参数传递给fnSplit()(即dbo.fnSplit()?)。根据您使用的SQL Server版本,您可能会考虑不同的连接方式。如果你在这里需要一些指导,我认为这可能是一个很好的起点:Concatenating Row Values(有很多类似的问题,并在相关章节中相应列出。)

  2. 使用光标为dbo.fnSplit()的每一行调用ClientCase。我应该建议创建一个新的表值函数dbo.fnSplitMultiple()来实现这种方法。在您的示例中,您可以选择dbo.fnSplitMultiple()而不是dbo.fnSplit()

  3. 如果结果字符串可能很长,那么第一种方法虽然可能更有吸引力但可能不太合适。我在使用SP和函数处理非常长的服务器端方面没有太多经验,所以我不确定,对我来说这里的游标只是一个备份选项。