ऐसा करने का सबसे अच्छा तरीका सी # कोड में एक एसक्यूएल स्टेटमेंट की बजाय संग्रहीत कार्यवाही का उपयोग करना है। आपको त्रुटि मिल रही है क्योंकि संदर्भित रिकॉर्ड अभी भी संदर्भित तालिका में मौजूद हैं और cmd.ExecuteReader();
का उपयोग कर रहे हैं के बजाय cmd.ExecuteNonQuery();
. इसलिए आपको DBS2_MOVIE WHERE MOVIE_ID = :AccountID
के रिकॉर्ड हटाने की जरूरत है उन सभी तालिकाओं से जहां तालिका के लिए बाधा है DBS2_MOVIE मौजूद है।
निम्नलिखित कोड आपकी मदद कर सकता है:
CREATE OR REPLACE PROCEDURE Delete_DBS2_MOVIE(p_MOVIE_ID IN DBS2_MOVIE.MOVIE_ID%TYPE) IS BEGIN --First delete p_MOVIE_ID from all the table where there is a constraint on DBS2_MOVIE --i.e. all the constraints you are getting error for DELETE FROM XXX WHERE MOVIE_ID = p_MOVIE_ID DELETE FROM DBS2_MOVIE WHERE MOVIE_ID = p_MOVIE_ID; END;
अपने C# कोड को इस प्रकार संशोधित करें:
public bool DeleteMovie(int MovieID)
{
string sql = "Delete_DBS2_MOVIE";
try
{
this.Connect();
OracleCommand cmd = new OracleCommand(sql, this.connection);
cmd.Parameters.Add(new OracleParameter("p_MOVIE_ID", MovieID));
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw;
}
finally
{
this.connection.Close();
}
return true;
}