我有一群学生注册参加秋季学期的课程,每门课程都有自己特定的先决条件要求。
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语句,我还能怎样做到这一点?