我有一個相對簡單的網站,它使用php + mssql。我有各種存儲過程,可以簡單地插入和刪除工作。我面臨的問題是,我傳入存儲過程的許多參數與插入數據的列的長度相同。sql server存儲過程使用varchar max作爲參數
例如我有一個存儲過程來註冊一個用戶。存儲的過程有一個參數@USERNAME
和varchar(12)
作爲類型。 USER
表中的列與該長度具有相同的類型。原則上這不是一個真正的問題。但我寧願能夠自由地更改列長度,而不必更改存儲過程參數的長度。
由於mssql php驅動程序不支持它們,我無法使用表值參數。
我可以想象的唯一解決方案就是使用varchar(max)作爲存儲過程參數,但這被認爲是不好的做法?
在我看來,存儲過程參數應該反映底層的列類型。這將避免運行時截斷錯誤並提供一個自我記錄存儲過程接口。 –
恕我直言,不要這樣限制字段長度。磁盤空間很便宜,而且SQL Server速度很快,而且最重要的是......事情變化 –
要麼使用參數sql資源IMO更適合版本控制,要麼爲數據庫中的每個字段創建UDT。那麼你只需要改變那裏的定義來影響表和存儲過程 – Mark