Fragensteller
fehlender Parameter einer SP wird beoim Erzeugen einer anderen SP nicht als Fehler erkannt

Frage
-
Hallo,
ich habe eine Sp, die 2 Parameter hat.
Ich habe eine weitere SP, die erste SP aufruft mit allerdings nur einem Parameter (also fehlt ein Parameter).
Beim Übersetzen der zweiten SP kommt aber kein Fehler, dieser kommt erst zur Laufzeit.
Das ist ein Verhalten, was mir bisher noch nicht begegnet ist.
Vielen Dank für Eure Hilfe.
Gregor
Alle Antworten
-
Hallo Gregor,
poste doch bitte beide CREATE Statements.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Hallo Stefan,
create procedure gregors (@val1 varchar(1), @val2 varchar(2))
as
begin
print 'hallo'
end
go
create procedure gregor2 as
begin
exec gregors '1'
endDie Erzeugung der zweiten SP geht ohne Probleme, obwohl ja 2 Parameter Pflicht sind.
Danke.
Gregor
-
da man Prozeduren mit dem selben Namen und unterschiedlichen Parametern definieren kann, sog. "Overloading".
Kann man nicht. Wie kommst Du darauf?
Optionale Parameter sind was komplett anderes als Überladung.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Bearbeitet Stefan FalzModerator Freitag, 14. Februar 2020 14:00
-
Hi,
oh, d.h. ich habe zur Entwurfszeit keine Möglichkeit herauszufinden, ob eine SP korrekt ist?
Jein. Das SSMS zeigt bei aktiviertem Intellisense zwar an, dass die Prozedur gregors zwei Parameter erwartet. Die SP kann man aber leider dennoch erzeugen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
das mit Intellisens hatte ich ja gesehen, daher habe ich mich ja gewundert, dass man es trotzdem erzeugen kann.
Da wir hunderte von Sp´s haben, muss ich vor einer Auslieferung ja sicherstellen, dass alles korrekt ist, die kann ich mir nicht von Hand anschauen,,,
Momentan habe ich diese Chance anscheinend nicht?
-
Du kannst ja auch nachträglich eine aufgerufene Prozedur löschen oder ändern und merkst einen Fehler erst zur Laufzeit.
Daher ist hier gutes (automatisiertes) Testen angesagt.
Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu
-
Das ist ein Verhalten, was mir bisher noch nicht begegnet ist.
Hallo Gregor,
das ist das ganz normale Verhalten, ist dokumentiert und liegt am "Deferred Name Resolution", der verzögerten Namensauflösung.
Man darf Stored Procedures erstellen, die auf Objekte zugreifen, die zum Zeitpunkt der Erstellung der SP nicht existiert. Es wird nur die korrekte SQL Syntax geprüft, nicht die Existens von Tabellen oder ob alle Parameter für eine SP angegeben wurden.Ich verwende für Datenbank Entwicklung grundsätzlich SSDT Datenbank Projekte, da wird das geprüft.
Olaf Helper
[ Blog] [ Xing] [ MVP]
- Bearbeitet Olaf HelperMVP Freitag, 14. Februar 2020 16:32