SQL Server中存储过程中的数据长度验证

时间:2016-12-28 12:44:40

标签: sql sql-server stored-procedures sql-server-2012

我有4个名为A,B,C,D的表。这4个表有10,20,30,40列。但是这4个表有5个共同的列,具有相同的数据类型和不同的长度。

我要做的是,我发送一个值表(单行,其中包含这5个常用值的值)到存储过程。

现在我想将行插入一个表,该表应该通过表名找到(表名在行本身中可用)。之前我需要进行数据长度验证。

它不应该像

if(len(@value1) > 800)

我需要一些不同的方法来产生长度验证。因为将来我可能出于某种目的改变列的长度。当时我无法更改存储过程中的值。请给我解决方案

1 个答案:

答案 0 :(得分: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