2010-11-26 4 views
2

Hallo, was ist der effiziente Weg, Parameter an die gespeicherte Prozedur in SQL Server zu übergeben?Parameter, der auf effiziente Weise an die gespeicherte Prozedur übergeben wird

Eigentlich enthält mein Parameterwert ein Ding wie

@empids = '1,2,3,4,5,6,7,8,9'

soetwas wie dies bis 1000

Also versuchte ich 1000 durch Komma getrennte Werte auf einen einzelnen Parameter zu übergeben und es funktioniert fein.

Aber gibt es andere beste Lösungen als diese?

Danke 2008

+0

gefragt hunderte Male schon auf SO .... –

Antwort

2

mithilfe von SQL Server Sie Table-Valued Parameters

Anders als das verwenden können, ja, das ist die akzeptierte Lösung.

Sie können auch einen Blick auf die XML data type

+0

danke astander .. ich werde versuchen mit dieser – jestges

0

haben Sie auch

wie als

string CustomerIdXML ="<NewDataSet><Table1><Id>56</Id></Table1><Table1><Id>57</Id></Table1></NewDataSet>"; 

SqlParameter[] _param = new SqlParameter[1]; 
_param[0] = new SqlParameter("@XDoc", CustomerIdXML); 

SqlDataAccess.ExecuteNonQuery(SqlDataAccess.ConnectionString, CommandType.StoredProcedure, "sp1", _param); 

Parameter unter Verwendung von XML passieren können Sie id in sp followin Weise

CREATE PROC [dbo].[sp1]   
    @xDoc NTEXT 
As  

DECLARE @docHandle INT   

EXEC sp_xml_preparedocument @docHandle OUTPUT, @xDoc   
BEGIN TRANSACTION   

UPDATE Tbl SET ISDelete = 1 WHERE Id IN (SELECT Id FROM OPENXML(@docHandle, '/NewDataSet/Table1', 3) WITH (Id BIGINT)) 

IF @@ERROR <> 0   
    BEGIN   
     ROLLBACK TRANSACTION   
     RETURN @@ERROR  
    END   
COMMIT TRANSACTION   

EXEC sp_xml_removedocument @docHandle   
RETURN 1 
retrive können

Hopw Sie mögen diese Weise

+0

XML ist toll, aber in diesem Fall versuchen, die Dinge einfach zu halten. Andernfalls könnten Sie zwei Probleme haben. – invert

Verwandte Themen