SQL Server - 为Recordset中的每一行执行动态SQL

时间:2016-05-12 15:41:45

标签: sql sql-server stored-procedures user-defined-functions dynamic-sql

我有一群学生注册参加秋季学期的课程,每门课程都有自己特定的先决条件要求。

LastName    FirstName   Course  Prerequisite(s)
Smith       John        ET212   (NS292  And  NS262  And  NS271) OR (( NS272 OR  CR313 ) AND CS134)
Smith       John        ET452   HC111
Apon        Jim         EG442   EG243
Apon        Jim         EG497   EG382 And  EG431
Jones       Greg        MS160   MS150
Jones       Greg        NV222   NV101 Or  NV212
Serandon    Susan       EG261   EG101

我创建了一个函数,它找到了课程的先决条件,并在适当的SQL中构建了一个谓词字符串(或者至少接近它 - 我无法测试),同时考虑了AND / OR的组合不同的必修课程:

NOT EXISTS (SELECT * FROM TRANSCRIPT WHERE ID = 'P000021210' AND COURSE = 'ET211')  And  NOT EXISTS (SELECT * FROM TRANSCRIPT WHERE ID = 'P000021210' AND COURSE = 'ES251') 

我希望使用这个函数为我的记录集中的每一行构建一个SQL语句(每个学生都要注册的每个类),执行该语句,然后返回一点;是的,他们符合参加课程的先决条件,或者不,他们没有。但是,显然你不能在函数中使用sp_executesql或EXECUTE()

所以我的问题的根源是,因为它似乎不可能执行记录集中每一行唯一的动态SQL语句,我还能怎样做到这一点?

0 个答案:

没有答案