我有一个查询使用游标来遍历select语句的结果。带光标的条件动态SQL
select语句简而言之就是从我有的映射表中选择所有的记录。其中一列是“SourceTableName”。
我使用此字段来生成一些动态SQL。
我正在寻找添加一个参数到我的存储过程,这将允许我只为'SourceTableName'创建动态SQL,如果我传入'SourceTableNameFilter'。
我困住了一些包装我的动态SQL的逻辑。
IF @SourceTableNameFilter(SP参数)= @SourceTableName(从映射表) BEGIN
生成并执行基于该SourceTableName一些动态SQL。
问题是,我希望这可以针对从'SourceTableName'选择返回的所有表上工作,但如果@SourceTableNameFilter参数存在并且不为空 - 那么只会为光标中的任何行生成动态SQL与我的过滤器参数相匹配。
有没有办法让我用IF语句来完成这个任务,而不用两次复制IF/ELSE中的逻辑?
FETCH NEXT FROM TABLECUR INTO @SourceTableName
,@SourceInColumn
,@SourceOutColumn
,@TargetTableName
,@TargetLookupColumn
,@TargetLookupResultColumn
,@MappingTableID
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
IF (@SourceTableName = @SourceTableNameFilter)
--GENERATE DYNAMIC SQL
ELSE
--GENERATE DYNAMIC SQL FOR ALL RECORDS
的生成动态SQL字符串是相同的两个,如果和其他人,没有办法更改条件,使我不能复制动态SQL生成和不生成动态SQL当@SourceTableName != @SourceTableNameFilter?
谢谢
辉煌。非常感谢你!! – user53885 2010-07-21 14:12:04