Det viser sig at være et tilfælde af dårlige data. Dataene i min test-DB var beskadiget og havde kun LF'er i stedet for CRLF'er.
GIGO :-)
Tak for al din hjælp
Åh og forresten I mit kodeeksempel gik jeg med INSTR-funktionen i stedet for den lignende funktion. Hvis brugeren indtastede en % i teksten for at søge igennem, kunne det have forvirret lignende-sætningen. (Kan ikke filtrere dem fra, fordi % kan være et gyldigt tegn i mine data)
Her er den endelige kode:
PROCEDURE FindReplaceResponsibilities (iOldResponsibilities IN JP_JOB_FAMILIES.RESPONSIBILITIES%TYPE,iNewResponsibilities IN JP_JOB_FAMILIES.RESPONSIBILITIES%TYPE,oNumRowsUpdated OUT INTEGER
)IS
BEGINoNumRowsUpdated :=0;
SAVEPOINT sp_jf_findrepresp; -- Hvis der ikke er nogen gammel tekst at søge efter, -- tilføjer den nye tekst til slutningen af hver række. -- Ellers erstat alle forekomster af den gamle tekst med den nye tekst HVIS iOldResponsibilities ER NULL SÅ OPDATERE JP_JOB_FAMILIES SÆT ANSVAR =ANSVAR || iNewAnsvar; oNumRowsUpdated :=SQL%ROWCOUNT; ELSE UPDATE JP_JOB_FAMILIES SET ANSVAR =REPLACE(RESPONSIBILITIES, iOldResponsibilities, iNewResponsibilities) WHERE dbms_lob.instr(RESPONSIBILITIES, iOldResponsibilities)> 0; oNumRowsUpdated :=SQL%ROWCOUNT; AFSLUT HVIS; VEND TILBAGE; UNDTAGELSE NÅR ANDRE SÅ BEGYNDER påNumRowsUpdated :=-1; TILBAGE TIL sp_jf_findrepresp; dbms_output.put_line('fejl:' || sqlerrm); VEND TILBAGE; END;
AFSLUT FindReplaceResponsibilities;
Koden fra min applikation var fin:
public int FindReplaceJobFamilyResponsibilities(String oldResponsibilities, String newResponsibilities, IDbTransaction transaction =null){ ved hjælp af (IDbCommand cmd =this._dataHelper.GetStoredProcedure(_connectionString, "JP_JOBFAM_Replacer.PKGspond.cmd.cmd) , "iOldResponsibilities", oldResponsibilities); _dataHelper.SetParameterValue(cmd, "iNewResponsibilities", newResponsibilities); DataHelperBase.VerifyParameters(cmd.Parameters, false); base.SetExecuteConnection(cmd, transaktion); _dataHelper.ExecuteNonQuery(cmd); return Convert.ToInt32(_dataHelper.GetParameterValue(cmd, "oNumRowsUpdated")); }}