2016-12-28 12 views
0

A、B、C、Dという4つのテーブルがあります。これらの4つのテーブルには10,20,30,40の列があります。しかし、これらの4つの表には、同じデータ型と異なる長さの5つの共通列があります。SQL Serverのストアドプロシージャのデータ長の検証

私のやるべきことは、ストアドプロシージャに値のテーブル(これらの5つの共通の値も持つ単一の行)を送ります。

ここで、テーブル名(テーブル名は行自体で使用可能)で見つかるはずのテーブルにその行を挿入します。そして、データの長さを検証する必要があります。

それは私が長さの検証を生成するために、いくつかの異なる方法が必要です

if(len(@value1) > 800) 

ようにすべきではありません。将来、私は何らかの目的のために列の長さを変更するかもしれないので。その時点で私はストアドプロシージャの値を変更することはできません。解決策を教えてください

+0

dbms? SQLサーバー ? –

+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

申し訳ありませんが、代替案を知りません。 –

関連する問題