为表中的每一行执行SQL函数

时间:2014-01-28 15:26:57

标签: sql sql-server-2008 function

我已经实现了一个SQL函数,我想为从表返回的每一行执行它。为简单起见,我们假设一个函数接受@StudentId作为参数,并返回一个表/多行,其中Subject和Score为列。

我想为每个从表格返回的学生执行此功能说学生并使用以下格式汇总临时表中的数据:

StudentId |主题|得分

我能想到的一种方法是将光标写在Students表上,为每个学生执行函数并在临时表中收集信息。这是我唯一的选择还是有更好的方法来解决这个问题?

我使用的是SQL Server 2008 R2。

Amey

1 个答案:

答案 0 :(得分:1)

嗯,如果没有正确的规范,我只能提供你从这样的东西开始(请在编写任何游标,循环或临时表之前停止并提供更多细节):

SELECT s.StudentId, f.someColumn FROM dbo.Students AS s
  CROSS APPLY dbo.FunctionName(s.StudentId) AS f;

此外,如果您提供有关函数本身的更多详细信息,我们可能会提供更好的编写方法(或根本不使用函数)。