Mam stosunkowo prostą stronę internetową, która używa php + mssql. Mam różne procedury składowane, które wykonują proste operacje wstawiania i usuwania. Problem, przed którym stoję, polega na tym, że wiele parametrów, które przechodzę do procedury przechowywanej, ma tę samą długość, co kolumna, którą wstawię dane.Procedura przechowywana na serwerze sql Użyj varchar max jako parametru
Na przykład mam procedurę przechowywaną, aby zarejestrować użytkownika. Procedura składowana ma parametr @USERNAME
z varchar(12)
jako typ. kolumna USERNAME
w tabeli ma ten sam typ o tej długości. Zasadniczo nie stanowi to problemu. Ale wolałbym móc dowolnie zmieniać długość kolumny USERNAME
, bez konieczności zmiany długości parametru procedury składowanej.
Nie mogę używać parametrów wycenianych w tabeli, ponieważ sterowniki mssql php nie obsługują ich.
Jedyne rozwiązanie, jakie mogę sobie wyobrazić, to użycie varchar (max) dla parametrów procedury składowanej, ale czy jest to uważane za złą praktykę?
Moim zdaniem parametry procedury składowanej powinny odzwierciedlać typ kolumny bazowej. Pozwoli to uniknąć błędów czasu obcięcia w czasie wykonywania i zapewni samokonujący interfejs procedur przechowywanych. –
IMHO, nie bądźcie tak restrykcyjni przy długościach pól. Miejsce na dysku jest tanie, a SQL Server jest szybki, a najważniejsze ... rzeczy zmieniają się –
albo użyj parametrów sql zasobów IMO lepiej dla kontroli wersji, albo utwórz UDT dla każdego pola w bazie danych. wtedy musisz tylko zmienić tam definicje, aby wpłynąć zarówno na tabelę, jak i na przechowywane proc – Mark