У меня есть относительно простой сайт, который использует php + mssql. У меня есть различные хранимые процедуры, которые выполняют простую вставку и удаление. Проблема, с которой я сталкиваюсь, заключается в том, что многие параметры, которые я передаю в хранимую процедуру, имеют ту же длину, что и столбец, в который я буду вставлять данные.sql server хранимая процедура использует varchar max как параметр
Например, у меня есть хранимая процедура регистрации пользователя. Хранимая процедура имеет параметр @USERNAME
с номером varchar(12)
. столбец USERNAME
в таблице USER
имеет тот же тип с этой длиной. В принципе это не проблема. Но я предпочел бы свободно изменять длину столбца USERNAME
, не изменяя также длину параметра хранимой процедуры.
Я не могу использовать параметры таблицы, поскольку драйверы mssql php их не поддерживают.
Единственное решение, которое я могу себе представить, это просто использовать varchar (max) для параметров хранимой процедуры, но считается ли это плохой практикой?
На мой взгляд, параметры хранимой процедуры должны отражать базовый тип столбца. Это позволит избежать ошибок усечения во время выполнения и обеспечить самодокументированный интерфейс хранимых процедур. –
IMHO, не следует ограничивать длину поля. Дисковое пространство дешево, а SQL Server - это очень быстро, и самое главное ... все меняется –
либо использует параметр sql resources IMO лучше для управления версиями, либо создает UDT для каждого поля в вашей базе данных. то вам нужно только изменить там определения, чтобы влиять как на таблицу, так и на хранимые procs – Mark