sql >> データベース >  >> RDS >> Oracle

Oracle 11g - キャリッジ リターン ライン フィードを使用して CLOB 内のレコードを検索する

    不良データの場合であることが判明しました。テスト DB のデータが破損しており、CRLF ではなく LF しかありませんでした。

    ジゴ :-)

    ご協力ありがとうございます

    ところで、私のコード例では、like 関数の代わりに INSTR 関数を使用しました。ユーザーが検索するテキストに % を入力すると、like ステートメントが台無しになる可能性があります。 (私のデータでは % が有効な文字である可能性があるため、それらを除外することはできません)

    最終的なコードは次のとおりです:

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

    )は

    BEGNoNumRowsUpdated :=0;

     SAVEPOINT sp_jf_findrepresp; -- 検索する古いテキストがない場合、 -- すべての行の最後に新しいテキストを追加します。 -- それ以外の場合は、古いテキストをすべて新しいテキストに置き換えます。 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;戻る;他が始まるときの例外 oNumRowsUpdated :=-1; sp_jf_findrepresp にロールバックします。 dbms_output.put_line('エラー:' || sqlerrm);戻る; END;  

    END FindReplaceResponsibilities;

    私のアプリケーションのコードは問題ありませんでした:

    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, トランザクション); _dataHelper.ExecuteNonQuery(cmd); Convert.ToInt32(_dataHelper.GetParameterValue(cmd, "oNumRowsUpdated")); を返します。 }}  


    1. Oracleでsysが所有していないテーブルを作成するにはどうすればよいですか?

    2. FoxProDBFファイルをSQLServerにインポートしようとしています

    3. OracleSQLのカスタムオーダー

    4. SQLServerで最後の行を読み取る方法