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

挿入が機能しているときにBLOB列を更新する方法、エラーORA-00932

    私があなたの投稿を読んだとき、あなたは物事を想像していたのに、私は本当に。不思議なことに、私はそれを試してみましたが、このエラーが実際に発生することに驚いていました。

    良い知らせがあります。私はあちこち見て、これを見つけました:

    ODP(Oracle.DataAccess)で>>準備されたクエリ<<を使用してCLOBフィールドのデータを更新するにはどうすればよいですか?

    LOBでupdateステートメントを使用する場合、最初にパラメーターでLOBを宣言する必要があることがわかりました。そのことを念頭に置いて、コードで発生したのと同じエラーが発生しましたが、これは完全に機能しました:

    public static bool StoreBlobImage(OracleConnection conn, string ArtNr, byte[] bImageJpg)
    {
        bool Ok = false;
        string Sql = "update MyTable set Image = :Image where ArtNr = :ArtNr";
    
        using (OracleCommand cmd = new OracleCommand(Sql, conn))
        {
            cmd.Parameters.Add("Image", OracleDbType.Blob).Value = bImageJpg;
            cmd.Parameters.Add("ArtNr", OracleDbType.Varchar2, 8).Value = ArtNr;
    
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception TheException)
            {
            }
        }
        return Ok;
    }
    

    パラメータを切り替えるだけです。

    私はその元の質問の質問と回答に賞賛を与えました(この場合は同じ人)。

    そうです、OracleのBLOBの更新を支援する方法として、Web上には貴重なものはほとんどありません。

    素晴らしい質問です。今日は何かを学んだような気がします。

    -編集-

    OPの提案によると、上記で参照した同じスレッドごとに、パラメーターを再配置する必要性を防ぐことができる別の修正があります。私の推測では、これは複数のLOBを更新する場合にも役立つ可能性があります。

    BindByNameの切り替え プロパティも問題を解決しているようです:

    cmd.BindByName = true;
    



    1. Mac OS上のMySQLでinnodb_buffer_pool_sizeの値を変更するにはどうすればよいですか?

    2. PHPssh2_tunnelを使用してPostgreSQLに接続します

    3. JDBCコネクタ5.1を使用してJavaからMySQLでUTF-8データを読み書きする際の問題

    4. この CASE 式はどのようにして ELSE 句に到達しますか?