0

ORA-06550: 行 1、列 7: PLS-00306: 'UPDATEPHOTO' の呼び出しで引数の数または型が間違っています
ORA-06550: 行 1、列 7: PL/SQL: ステートメントは無視されましたOracle.ManagedDataAccess.Client.OracleException

手順またはコードのどちらが悪いのかわかりません。

ここに私のストアドプロシージャがあります

create or replace 
PROCEDURE UpdatePhoto
(
  v_ac_photo_fileName IN VARCHAR2 DEFAULT NULL ,
  v_ac_photo_contentType IN VARCHAR2 DEFAULT NULL ,
  v_ac_photo_Data IN BLOB DEFAULT NULL ,
  v_ac_uniqueID IN VARCHAR2 DEFAULT NULL 
)
AS

BEGIN
   UPDATE account_table
      SET ac_photo_fileName = v_ac_photo_fileName,
          ac_photo_contentType = v_ac_photo_contentType,
          ac_photo_Data = v_ac_photo_Data
      WHERE ac_uniqueID = v_ac_uniqueID;
END;

ここに私のC#コードがあります:

public int UpdatePhoto(BO nBo)
{
    OracleConnection ocon = new OracleConnection(orastr);
    OracleCommand ocmd = new OracleCommand("UpdatePhoto", ocon);
    ocmd.CommandType = CommandType.StoredProcedure;

    ocon.Open();

    try
    {
        ocmd.Parameters.Add("ac_uniqueID", nBo.account_uniqueID);//String
        ocmd.Parameters.Add("ac_photo_fileName", nBo.account_photo_fileName);//string
        ocmd.Parameters.Add("ac_photo_contentType",   nBo.account_photo_contentType);//string
        ocmd.Parameters.Add("ac_photo_Data", nBo.account_photo_Data);// (Byte[] photo data)       

        // tried these also
        ocmd.Parameters.Add("ac_uniqueID", OracleDbType.Varchar2, ParameterDirection.Input).Value = nBo.account_uniqueID;
        ocmd.Parameters.Add("ac_photo_fileName", OracleDbType.Varchar2, ParameterDirection.Input).Value = nBo.account_photo_fileName;
        ocmd.Parameters.Add("ac_photo_contentType", OracleDbType.Varchar2, ParameterDirection.Input).Value = nBo.account_photo_contentType;
        ocmd.Parameters.Add("ac_photo_Data", OracleDbType.Blob, ParameterDirection.Input).Value = nBo.account_photo_Data;

        return ocmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        ocon.Dispose();
        ocon.Close();
        nBo = null;
    }
}
4

1 に答える 1

0

この投稿をチェックしてください:

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

これがあなたの問題であるとは断言できませんが、この投稿によると、パラメーターとして BLOB がある場合、これを機能させるには、パラメーター リストの最初にそれらをリストする必要があります。理由はわかりませんが、当時は両方の方法で試してみましたが、BLOB が最初の場合は機能し、そうでない場合は機能しませんでした。私は知っています、それは意味がありません。

または、オブジェクトのBindByNameプロパティを true に設定すると、これも機能するはずです。OracleCommand念のために両方試してみます。

1 つの注意点: 私が参照した投稿は、ストアド プロシージャではなく挿入関数に関するものであるため、違いがある可能性があります。

于 2016-08-12T03:45:12.257 に答える