Ich habe eine relativ einfache Website, die PHP + mssql verwendet. Ich habe verschiedene gespeicherte Prozeduren, die Arbeit einfach einfügen und löschen. Das Problem, mit dem ich konfrontiert bin, ist, dass viele der Parameter, die ich in die gespeicherte Prozedur übergebe, die gleiche Länge haben wie die Spalte, in die ich die Daten einfügen werde.sql Server gespeicherte Prozedur verwenden varchar max als Parameter
Zum Beispiel habe ich eine gespeicherte Prozedur, um einen Benutzer zu registrieren. Die gespeicherte Prozedur hat als Typ einen Parameter @USERNAME
mit varchar(12)
. Die Spalte USERNAME
in der Tabelle USER
hat den gleichen Typ mit dieser Länge. Im Prinzip ist das nicht wirklich ein Problem. Aber ich würde lieber in der Lage sein, die Spaltenlänge USERNAME
frei zu ändern, ohne auch die Länge des gespeicherten Prozedurparameters ändern zu müssen.
Ich kann Tabellenwerte nicht verwenden, da die mssql php-Treiber sie nicht unterstützen.
Die einzige Lösung, die ich mir vorstellen kann, ist nur varchar (max) für die gespeicherten Prozedurparameter zu verwenden, aber wird dies als schlechte Praxis angesehen?
Meiner Meinung nach sollten die gespeicherten Prozedurparameter den zugrunde liegenden Spaltentyp widerspiegeln. Das wird Laufzeitkürzungsfehler vermeiden und eine selbst-dokumentierende gespeicherte Prozedurschnittstelle bereitstellen. –
IMHO, seien Sie nicht so restriktiv mit Feldlängen. Speicherplatz ist billig, und SQL Server ist schnell und am wichtigsten ... Dinge ändern –
entweder Parameter sql Ressourcen verwenden IMO besser für die Versionskontrolle oder erstellen UDTs für jedes Feld in Ihrer Datenbank. Dann müssen Sie nur die Definitionen ändern, um sowohl die Tabelle als auch die gespeicherten Prozeduren zu beeinflussen – Mark