Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle 11g - Tìm Bản ghi trong CLOB với Nguồn cấp dữ liệu Dòng trả hàng Vận chuyển

Hóa ra là một trường hợp dữ liệu xấu. Dữ liệu trong Cơ sở dữ liệu thử nghiệm của tôi đã bị hỏng và chỉ có LF thay vì CRLF.

GIGO :-)

Cảm ơn tất cả sự giúp đỡ của bạn

Ồ và nhân tiện Trong ví dụ mã của tôi, tôi đã sử dụng hàm INSTR thay vì hàm like. Nếu người dùng nhập% vào văn bản để tìm kiếm, điều đó có thể đã làm sai lệch câu lệnh like. (Không thể lọc những thứ đó ra vì% có thể là một ký tự hợp lệ trong dữ liệu của tôi)

Đây là mã cuối cùng:

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

) LÀ

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;

KẾT THÚC FindReplaceResponsibility;

Mã từ ứng dụng của tôi tốt:

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. Cách xuất một lượng lớn dữ liệu bằng cách sử dụng sql Developer - Oracle

  2. Chuyển đổi một chuỗi thành ngày tháng và nâng cao một ngoại lệ khi chuỗi đã cho không hợp lệ

  3. decode in oracle chuyển đổi thành postgres

  4. Cách xử lý / sử dụng các ký tự đặc biệt như phần trăm (%) và dấu và (&) trong các truy vấn SQL của Oracle

  5. Thời gian dài tìm nạp dữ liệu từ OracleDB bằng Eclipselink