我有4个名为A,B,C,D的表。这4个表有10,20,30,40列。但是这4个表有5个共同的列,具有相同的数据类型和不同的长度。
我要做的是,我发送一个值表(单行,其中包含这5个常用值的值)到存储过程。
现在我想将行插入一个表,该表应该通过表名找到(表名在行本身中可用)。之前我需要进行数据长度验证。
它不应该像
if(len(@value1) > 800)
我需要一些不同的方法来产生长度验证。因为将来我可能出于某种目的改变列的长度。当时我无法更改存储过程中的值。请给我解决方案
答案 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