我已經爲我們的生產線創建了一個腳本,用戶在執行之前將一些變量輸入到腳本中。問題是變量是NVARCHAR(9),並且如果用戶輸入10個字符,最後一個字符被切斷(如預期的那樣),我想知道的是如果SQL輸入一個值太長?這個問題源於用戶粗暴地指責他們的輸入。 例子:如何在SQL Server中強制使用nvarchar輸入寬度?
Valid input -
DECLARE @ClientCode NVARCHAR(9)
SET @ClientCode = N'ABCDEFGHI'
SELECT @ClientCode
Results
ABCDEFGHI
無效的輸入 -
DECLARE @ClientCode NVARCHAR(9)
SET @ClientCode = 'ABCDDEFGHI'
SELECT @ClientCode
Results
ABCDDEFGH
什麼我希望的是,將有SSMS引發錯誤的設置。我很希望避免是一樣的東西 -
DECLARE @ClientCode NVARCHAR(50)
...
IF LEN(@ClientCode) > 9
RAISERROR('Too long dummy.',16,1)
感謝您幫助
我認爲你應該把這個驗證客戶端,而不是在數據庫中......不需要爲了告訴用戶輸入過長而往返數據庫。更好的是,甚至不要讓他們輸入太長的字符串。 –
我同意你的意見。但是,這不是我正在處理的系統中的一個選項。 這些腳本由SSMS內的非常JR技術人員運行。所以沒有客戶端。該腳本用於創建事物的客戶端。我的解決方案是讓所有這些腳本都被技術人員可以登錄的Web前端解僱,將他們的參數輸入到Web表單中,然後單擊「去」。 不幸的是,管理層希望保持現狀:「我們一直這樣做多年,我不明白爲什麼我們應該花這筆錢用正確的方式」...... –