2016-12-28 5 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

извините, я не знаю альтернативы .. –

Смежные вопросы