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 \ ScormPackagesPackagesPackagesPackagesPackagesPackagesPackagesPackages \ 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擬似コードと同様)

あなたの句が何を意味するのかわかりませんが、sに句をWHERE追加することもできます。WHEREUPDATE

編集

さて、質問のコードを完全に変更しました。

今、あなたはカーソルを見ていますが、更新はテーブル全体に対して行われています。

したがって、8行ある場合は、更新を8回実行します。しかし、テーブルのすべての行に対してそれを行うたびに。

于 2012-10-16T11:45:50.863 に答える