Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle 11g - Temukan Catatan dalam CLOB dengan Umpan Jalur Pengembalian Kereta

Ternyata menjadi kasus data yang buruk. Data dalam Test DB saya rusak dan hanya memiliki LF, bukan CRLF.

GIGO :-)

Terima kasih atas semua bantuan Anda

Oh dan omong-omong Dalam contoh kode saya, saya menggunakan fungsi INSTR alih-alih fungsi sejenisnya. Jika pengguna memasukkan % dalam teks untuk mencari, itu mungkin akan mengacaukan pernyataan suka. (Tidak dapat memfilternya karena % mungkin merupakan karakter yang valid dalam data saya)

Ini Kode Terakhirnya:

PROCEDURE FindReplaceResponsibilities (
iOldResponsibilities    IN  JP_JOB_FAMILIES.RESPONSIBILITIES%TYPE,
iNewResponsibilities    IN  JP_JOB_FAMILIES.RESPONSIBILITIES%TYPE,
oNumRowsUpdated         OUT INTEGER

)ADALAH

BEGINoNumRowsUpdated :=0;

    SAVEPOINT sp_jf_findrepresp;

    -- If there is no old text to search for then, 
    -- append the new text to the end of every row.
    -- Else replace all occurrences of the old text with the new text
    IF iOldResponsibilities IS NULL THEN
      UPDATE JP_JOB_FAMILIES
        SET RESPONSIBILITIES = RESPONSIBILITIES || iNewResponsibilities;

      oNumRowsUpdated := SQL%ROWCOUNT;

    ELSE
      UPDATE JP_JOB_FAMILIES
        SET RESPONSIBILITIES = REPLACE(RESPONSIBILITIES, iOldResponsibilities, iNewResponsibilities)
      WHERE dbms_lob.instr(RESPONSIBILITIES, iOldResponsibilities) > 0; 

      oNumRowsUpdated := SQL%ROWCOUNT;

    END IF;

    RETURN;

    EXCEPTION

        WHEN OTHERS THEN
            BEGIN
                oNumRowsUpdated := -1;
                ROLLBACK TO sp_jf_findrepresp;
                dbms_output.put_line('error: ' || sqlerrm);
                RETURN;
            END;

AKHIR FindReplaceResponsibilities;

Kode dari aplikasi saya baik-baik saja:

public int FindReplaceJobFamilyResponsibilities(String oldResponsibilities, String newResponsibilities, IDbTransaction transaction = null)
{
    using (IDbCommand cmd = this._dataHelper.GetStoredProcedure(_connectionString,
        "JP_JOBFAM_PKG.FindReplaceResponsibilities", true))
    {
        _dataHelper.SetParameterValue(cmd, "iOldResponsibilities", oldResponsibilities);
        _dataHelper.SetParameterValue(cmd, "iNewResponsibilities", newResponsibilities);
        DataHelperBase.VerifyParameters(cmd.Parameters, false);
        base.SetExecuteConnection(cmd, transaction);
        _dataHelper.ExecuteNonQuery(cmd);

        return Convert.ToInt32(_dataHelper.GetParameterValue(cmd, "oNumRowsUpdated"));
    }
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL/SQL - Tingkatkan Pengecualian Buatan Pengguna Dengan SQLERRM Kustom

  2. Pernyataan Kasus Oracle Dijelaskan dengan Tip dan Contoh

  3. UPDATE pada INSERT duplikat kunci utama di Oracle?

  4. Apa itu Undo dan redo di database Oracle

  5. Oracle SQL - Cara mendapatkan penghitungan berdasarkan tanggal menjadi beberapa kolom di ORACLE