2016-12-28 36 views
0

我有4個表稱爲A,B,C,D。這4個表有10,20,30,40列。但是這4個表格有5個具有相同數據類型和不同長度的公共列。SQL Server中存儲過程中的數據長度驗證

我要做的動作是,我向存儲過程發送一個值表(具有這5個公共值的單行)到存儲過程。

現在我想將行插入到應該通過表名找到的表中(表名在行本身中可用)。之前我需要做數據長度驗證。

它不應該是這樣

if(len(@value1) > 800) 

我需要一些不同的方式來產生長度確認。因爲將來我可能會爲了某種目的而改變列的長度。當時我無法更改存儲過程中的值。請給我解決方案

+0

哪個dbms? sqlserver? –

+0

是的。 MS Sql Server 2012 – Prakash

回答

2

您可以使用INFORMATION_SCHEMA.COLUMNS視圖來獲取屬於該表的列的信息。

DECLARE @ColumnLength INT 

SELECT @ColumnLength = CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'YourTableName' AND COLUMN_NAME='columnName' 

-- Use the variable @ColumnLength for conditons in your stored proc so need of hardcoding length 

IF LEN(@value1) > @ColumnLength 
BEGIN 

-- Your statements 
END 
+0

如果沒有最小值,這是解決驗證的最好方法。列驗證。但是當我使用10列以上時,需要花費太多時間進行驗證,並且可能會導致超時錯誤。 – Prakash

+0

如果沒有最小值,這是解決驗證的最佳方法。列驗證。但是當我使用10列以上時,需要花費太多時間進行驗證,並且可能會導致超時錯誤。 你能否提出其他簡單的建議? – Prakash

+0

對不起,我不知道替代.. –