0

很奇怪,不确定我是否正确,但输出很奇怪:

 select * 
   into #TempScormModuelsTable  
 from Scorm.ScormModules

 select * from #TempScormModuelsTable 
 DECLARE @ScormModuleId int

DECLARE db_cursor CURSOR FOR   
SELECT ScormModuleId from #TempScormModuelsTable

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @ScormModuleId
WHILE @@FETCH_STATUS = 0
  BEGIN

   update #TempScormModuelsTable  
   set Directory = REPLACE(Directory,'SCORM','ScormPackages'),
   RelativeHtmlPath = REPLACE(RelativeHtmlPath,'SCORM','ScormPackages')

     FETCH NEXT FROM db_cursor INTO @ScormModuleId
  END  

--drop table #TempScormModuelsTable 

CLOSE db_cursor
DEALLOCATE db_cursor

然后在列目录中我有这个!E:\inetpub\www.sellandprosper.com\ScormPackagesPackagesPackagesPackagesPackagesPackagesPackages\SellingOfficeWithNewPCs

“ScormPackagesPackagesPackagesPackagesPackagesPackagesPackagesPackages”是“SCORM”,我只想要它作为 ScormPackages..yikes

有什么帮助吗?

4

1 回答 1

0

那不是 SQL。

你需要一些更接近...

UPDATE
  Scorm.ScormModules_backup
SET
  Directory        = REPLACE(Directory,        'SCORM', 'ScormPackages'),
  RelativeHtmlPath = REPLACE(RelativeHtmlPath, 'SCORM', 'ScormPackages')

SQL 已经基于设置,这自然会将其应用于每一行(很像您的 FOREACH 伪代码)

我不确定您的WHERE子句是什么意思,但您也可以将WHERE子句附加到UPDATEs。

编辑

好的,您只是完全更改了问题中的代码。

现在,您正在查看游标,但正在对整个表进行更新。

因此,如果您有 8 行,则执行 8 次更新。但是每次你对表中的每一行都这样做。

于 2012-10-16T11:45:50.863 回答