2010-11-26 7 views
2

Salut quel est le moyen efficace de passer des paramètres à la procédure stockée dans SQL Server?Paramètre passant à la procédure stockée d'une manière efficace

En fait, ma valeur de paramètre contient quelque chose comme

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

quelque chose comme ça jusqu'à 1000

J'ai donc essayé de passer 1000 valeurs séparées par des virgules à un seul paramètre et il travaille bien.

Mais existe-t-il d'autres meilleures solutions que celle-ci?

Merci

+0

demandé des centaines de fois déjà sur SO .... –

Répondre

2

En utilisant SQL Server 2008, vous pouvez utiliser un Table-Valued Parameters

Autre que cela, oui, c'est la solution retenue.

Vous pouvez également jeter un oeil à la XML data type

+0

merci astander .. je vais essayer avec ce – jestges

0

Vous pouvez passer paramètre à l'aide xml aussi

comme en

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); 

Vous pouvez retrive id dans sp en utilisant façon followin

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 

Hopw vous aimez ce trajet

+0

XML est super, mais dans ce cas, essayez de garder les choses simples. Sinon, vous pourriez vous retrouver avec deux problèmes. – invert

Questions connexes