2009-09-23 9 views
0

Je souhaite appeler une procédure stockée dans SQL Server 2005 qui renvoie une chaîne XML pouvant ensuite être transmise à une autre méthode; Je pense que le code ci-dessous est juste jusqu'au point où j'exécuter la requête, mais je suis un peu perdu ...Traitement des résultats de la procédure stockée FOR XML PATH

private string GetChartData(string OC_Ttl1, string OC_OL31, string OC_OL32) 
{ 
    string chartData; 

    //Prepare Connection Variables 
    SqlConnection conn_Org = new SqlConnection(); 
    SqlCommand cmd_Org = new SqlCommand(); 

    //Open Connection 
    conn_Org.ConnectionString = Set_OrgChartConn(); 
    conn_Org.Open(); 

    //Execute Procedure 
    cmd_Org.Connection = conn_Org; 
    cmd_Org.CommandText = "dbo.usp_CreateOrgDataSet '" + OC_Ttl1 +"','" + OC_OL31 + "'.'" + OC_OL32 +"'"; 
    cmd_Org.CommandType = CommandType.StoredProcedure; 

    chartData = cmd_Org.ExecuteScalar(); 

    conn_Org.Close(); 

    return chartData; 
} 

Toutes les idées?

+0

Que fait dbo.usp_CreateOrgDataSet? –

+0

Il renvoie une chaîne XML, avec je veux passer dans chartData pour une utilisation dans une autre méthode. Fondamentalement, ce sont ces lignes que je n'ai pas idead ce que je fais avec cmd_Org.ExecuteReader(); chartData = cmd_Org (Ce qui se passe ici ????) – MrBliz

Répondre

1
cmd_Org.CommandText = "dbo.usp_CreateOrgDataSet '" + OC_Ttl1 +"','" + OC_OL31 + "'.'" + OC_OL32 +"'"; 
cmd_Org.CommandType = CommandType.StoredProcedure; 

La ligne ci-dessus peut provoquer une erreur. Si vous définissez

cmd_Org.CommandType = CommandType.StoredProcedure; 

et

"dbo.usp_CreateOrgDataSet '" + OC_Ttl1 +"','" + OC_OL31 + "'.'" + OC_OL32 +"'" 

comme CommandText, le CommandText sera traité comme le nom de la procédure stockée et l'erreur

Impossible de trouver la procédure stockée [dbo.usp_CreateOrgDataSet. ...]

se produira.

Vous pouvez définir uniquement dbo.usp_CreateOrgDataSet comme CommandText et transmettre les paramètres par ex.

mycommand.Parameters.AddWithValue('@param1', OC_Ttl1); 
mycommand.Parameters.AddWithValue('@param2', OC_OL31); 
mycommand.Parameters.AddWithValue('@param3',OC_OL32); 

cmd_Org.CommandType = CommandType.StoredProcedure; 
chartData = cmd_Org.ExecuteScalar(); 
+0

Merci beaucoup. Pour référence, Visual Studio a préféré les guillemets doubles autour de "@param (x)" – MrBliz

0

Pouvez-vous simplement appeler cmd_Org.ExecuteScalar()?

+0

Je vais lui donner une faille – MrBliz

Questions connexes