Witam.
Napisalem sobie funkcje:
public static void RunStoredProcedureParam(string ProcedureName, Dictionary<string, string> parameters = null)
{
using (SqlConnection objConn = CreateConnection())
{
SqlCommand command = new SqlCommand(ProcedureName, objConn);
try
{
command.CommandType = CommandType.StoredProcedure;
if (parameters != null)
{
foreach (var pair in parameters)
{
command.Parameters.AddWithValue(pair.Key, pair.Value);
}
}
command.ExecuteNonQuery();
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show("Blad wywolania procedury skladowej!"+"\r\n"+ex.ToString());
}
}
}
Funkcja dziala dobrze dopoki paramatery sa takiego samego typu.
Utworzylem sobie jednak procedure w MSSQL typu dbo.RekordDodajEdytuj, w ktorej zawarlem warunek, ze jesli ID jest NULL to procedura tworzy nowy rekord ale jesli dostaje konkretna wartosc to dokonuje zmian w rekordzie.
ID jest typu INT.
No ale teraz zdefiniowanie parametrow:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("@Id", null);
dict.Add("@Nip", textBox1.Text.ToString());
dict.Add("@Regon", textBox2.Text.ToString());
dict.Add("@Nazwa", textBox3.Text.ToString());
wyrzuca mi blad, mowiacy o niezgodnosci typow.
Mozemy porzucic moj pomysl i zadac pytanie. Jak wywolac w programie c# procedure w mssql o roznych typach parametrow?