2016-10-21 3 views
0

Ich habe Komma-getrennte Zahlen, die wir als Eingabe an eine gespeicherte Prozedur übergeben müssen.SQL Server: Wie Eingangsvariablen variabler Länge übergeben? Die Länge kann bis zu einem bestimmten Limit gehen?

Der Eingangsparameter wie folgt aussieht:

@CustStockLogIdList varchar(1000) 

I-Eingang wie 1,2,3,4,5,6,7,8 zu diesem Parameter sandte und so weiter. Die Liste könnte beliebig lang sein.

Ich weiß in diesem Fall, wenn es 1000 Zeichen überschreitet, würde es den übergebenen Wert auf 1000 Zeichen reduzieren und Rest der Verarbeitung tun.

Aber ich bin mir nicht sicher über die Länge.

Wie ich gelesen habe Grenze von Varchar ist 8000, @CustStockLogIdList varchar(MAX) oder @CustStockLogIdList varchar(8000) würde auch erlauben Länge 8000 Zeichen, aber ich will mehr als das. Ich bin mir nicht sicher über die maximale Länge, die ich brauche.

Antwort

2

Sie können VARCHAR(MAX) verwenden, die ermöglicht, bis zu 2GB von Daten zu senden.

Aber ich will Sie Tabelle Wertparameter wie Prozedur Eingabeparameter zu verwenden, anstatt durch Kommata getrennte Liste als Eingabe

Create type udt_CustStockLogIdList as table 
(
id int 
) 

Sie müssen die Prozedur ändern, um diesen udt_CustStockLogIdList als Parameter zu übernehmen.

Alter procedure prc_proc_name(@CustStockLogIdList_TT udt_CustStockLogIdList READONLY) 
As 
Begin 
.. 
End 

die Prozedur

Declare @CustStockLogIdList_TT udt_CustStockLogIdList 

Insert into @CustStockLogIdList_TT 
values (1),(2),(3),.. 

Exec prc_proc_name CustStockLogIdList_TT 
aufrufen