0

解決できない問題があります。私が行っている選択は、8500以上の値を返します。それらの多くには、アポストロフィ、逆コンマ、コンマ (")(')(,) が含まれています。SQL
から mysql への接続を使用しています。

したがって、対処する必要がある値は 1 つではありません。「イート アット ジョー」を使用して 1 つの値を処理する方法を知っています。または「Joe's で食べる -- It\'s Good Food!」;.
誰か助けてくれませんか

DECLARE @dogno varchar(5)
DECLARE @ime VARCHAR(200)
DECLARE @adresa VARCHAR(200)

DECLARE nam CURSOR FOR
    select Klienti.naziv as ime, Ulici.naziv+' '+Klienti.ulica_br as adresa , tKlienti_Dogovori.dogovor_br as dogno 
    from Klienti_Dogovori
    INNER JOIN Klienti on Klienti.id=Klienti_Dogovori.klient_id
    INNER JOIN Ulici on Ulici.id=Klienti.ulica_id
    where Klienti_Dogovori.usluga_id=2 and Klienti_Dogovori.aktiven=1
open nam
    fetch next from nam into @ime, @adresa, @dogno
    while @@FETCH_STATUS = 0 BEGIN
    DECLARE @sync varchar(max)
            set @sync = '''update users set name=''' +cast(@ime as VARCHAR(200))+ ''', address=''' +cast (@adresa as varchar(200))+ ''' where dognumber=''' + cast (@dogno as varchar(5))
        Execute(@sync) at mysqlserver
    fetch next from nam into @ime, @adresa, @dogno
    END
close nam
deallocate nam

この関数は、アポストロフィ、逆コンマ、またはコンマ (")(')(,) を含む値になるまで正常に機能します。

4

2 に答える 2

0

うーん。この忌まわしいことを行うよりも、リンク サーバーに対してストアド プロシージャまたは UPDATE ステートメントを実行する方がはるかに優れています。

また、不要で遅いカーソルではなく、セットベースの更新を行うことも検討する必要があります。

于 2013-10-04T14:36:43.650 に答える