Ich habe eine Methode, die gespeicherte Prozedur auf einem Oracle-und SQL Server-Datenbanken mit dynamischen Parametern ausführen soll (Sie kennen die Parameternamen nicht).Gespeicherte Prozedur auf mehreren Datenbanken mit dynamischen Parameternamen ausführen
IDbCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
int i = 0;
foreach (string parameterName in names)
{
var param2 = cmd.CreateParameter();
param2.ParameterName = parameterName + "__" + i.ToString();
param2.DbType = DbType.String;
param2.Direction = ParameterDirection.Input;
param2.Value = parameterName;
cmd.Parameters.Add(param2);
i++;
}
cmd.CommandText = "spName";
Dieser Code funktioniert auf Oracle aber SQL Server wirft
Prozedur oder Funktion 'pspName' erwartet Parameter '@userID', die nicht
Da der Parametername geliefert wurde in meinem Code ist nicht "@ userID". Dank
Nun, was ist der Parametername? – OldProgrammer
Sie können versuchen, Ihr Ziel zu erreichen, indem Sie die Methode SqlCommandBuilder/OracleCommandBuilder 'DeriveParameters' verwenden, die die Parametersammlung für Sie erstellt. Aber du bist immer noch weit weg von zu Hause. Sie müssen einen bestimmten SqlCommandBuilder oder OracleCommandBuilder erstellen. Anschließend müssen Sie eine praktikable Möglichkeit zum Einrichten der Parameterwerte erstellen. Wenn Sie wirklich bereit sind, all diese Arbeit zu tun, warum versuchen Sie dann nicht, ein ORM zu lernen, das Ihnen dabei hilft, Ihren Datenbankcode vom zugrunde liegenden Datenbanksystem zu abstrahieren? – Steve
@oldprogrammer es spielt keine Rolle den Namen, nichts funktioniert, wenn der Parametername in der SP-Defension gleich ist. –