2016-12-28 3 views
0

Ich habe 4 Tabellen namens A, B, C, D. Diese 4 Tabellen haben 10,20,30,40 Spalten. Aber diese 4 Tabellen haben 5 gemeinsame Spalten mit dem gleichen Datentyp und unterschiedlichen Längen.Datenlänge Validierung in gespeicherten Prozedur in SQL Server

Meine Aktion zu tun ist, ich sende eine Tabelle von Werten (einzelne Zeile, die die Werte dieser 5 gemeinsamen Werte auch hat) an gespeicherte Prozedur.

Jetzt möchte ich die Zeile in eine Tabelle einfügen, die durch den Tabellennamen gefunden werden sollte (Tabellenname ist in der Zeile selbst verfügbar). Und vorher muss ich die Datenlänge überprüfen.

Es sollte nicht wie sein

if(len(@value1) > 800) 

ich eine andere Art und Weise müssen die Länge Validierung zu produzieren. Weil ich in Zukunft die Länge der Spalte für einen bestimmten Zweck ändern kann. Zu der Zeit kann ich den Wert in der gespeicherten Prozedur nicht ändern. Bitte geben Sie mir die Lösung

+0

welche dbms? SQL Server ? –

+0

Ja. MS Sql Server 2012 – Prakash

Antwort

2

Sie können INFORMATION_SCHEMA.COLUMNS Ansicht verwenden, um Informationen der Spalte der Tabelle zu holen.

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

Es ist der beste Weg, um die Validierung zu lösen, wenn es mindestens keine gibt. der Spaltenvalidierung. Aber wenn ich mit mehr als 10 Spalten gehe, dauert es zu lange, um zu validieren und es kann zu einem Timeout-Fehler kommen. – Prakash

+0

Es ist der beste Weg, um die Validierung zu lösen, wenn es mindestens keine gibt. der Spaltenvalidierung. Aber wenn ich mit mehr als 10 Spalten gehe, dauert es zu lange, um zu validieren und es kann zu einem Timeout-Fehler kommen. Könnten Sie bitte den anderen einfachen Weg vorschlagen? – Prakash

+0

sorry, ich weiß nicht alternative .. –

Verwandte Themen