Leicht Off Topic: SQL Server: Sind optionale Parameter möglich?



  • Arbeite mich gerade in ADO.NET ein. Habe in TestDB (siehe in diesem Thread) die gespeicherte Transact-SQL-Prozedur "sp_create_user". Diese erwartet 3 Parameter, einer davon ist Datenbankmäßig ZWINGEND erforderlich. Die anderen beiden (Firstname und Lastname) könnte man eigentlich (datenbankmäßig) weg lassen.

    Rufe ich diese gespeicherte SQL-Funktion aber von C# aus auf, bekomme ich zur Laufzeit eine Fehlermeldung, dass die SP 3 Parameter erwartet, aber nur einen bekommt (wenn ich nur den zwingend benötigten mit cmd.Parameters.Add(new SqlParameter(...) setze).

    Gibt es eine Möglichkeit die SP (in SQl geschrieben und in der Datenbank gespeichert) so zu schreiben, dass man die beiden optionalen Parameter (datenbankmäßig) auch von C# weg lassen kann?

    Oder muss ich das schon auf der C#-Seite lösen (wenn nichts angegeben für die beiden Parameter einen Leerstring [""] übergeben)?

    Das ist also eher eine Transact-SQL-Frage, als eine C#-Frage.

    p.s.: In C++ (oder Python) wäre so etwas (jeweils sprachintern) sehr einfach zu lösen:

    void funcWith3ParamsOneRequired(int required, char notRequired[]="", bool notNeeded="false") {...}

    Die Frage ist also, ob es auch in Transact-SQL möglich ist, Default-Parameter zu nutzen?



  • CREATE PROCEDURE sp_create_user
        @username nvarchar(MAX),
        @firstName nvarchar(MAX) = null,
        @lastName nvarchar(MAX) = null
    AS
    	...
    

    ?



  • Danke, funktioniert 🙂



  • Und jetzt noch zum Abschluss, damit ichs auch weiss... was genau hat dich nochmal daran gehindert das in < 1 Minute selbst zu ergoogeln?


Anmelden zum Antworten