Je reçois une exception SqlException lors de l'exécution du code suivant. "La procédure ou la fonction 'usp_Search' attend le paramètre '@pxmlSearchOutput', qui n'a pas été fourni."SqlClient Xml Le paramètre de sortie "was not provided"
Mes paramètres + demande.
using (var connection = new SqlConnection(_connectionString))
{
using (var command = new SqlCommand("Search.usp_Search", con))
{
var pxmlSearchOutput = new SqlParameter();
pxmlSearchOutput.ParameterName = "@pxmlSearchOutput";
pxmlSearchOutput.SqlDbType = SqlDbType.Xml;
pxmlSearchOutput.Direction = ParameterDirection.Output;
pxmlSearchOutput.Size = 1;
command.Parameters.Add(pxmlSearchOutput);
var pxmlSearchInput = new SqlParameter();
pxmlSearchInput.ParameterName = "@pxmlSearchInput";
pxmlSearchInput.Value = requestXML;//is valid xml, is a local var
pxmlSearchInput.SqlDbType = SqlDbType.Xml;
command.Parameters.Add(pxmlSearchInput);
var pbitDebug = new SqlParameter();
pbitDebug.Value = false;
pbitDebug.ParameterName = "@pbitDebug";
pbitDebug.SqlDbType = SqlDbType.Bit;
command.Parameters.Add(pbitDebug);
var pintErrorNumber = new SqlParameter();
pintErrorNumber.ParameterName = "@pintErrorNumber";
pintErrorNumber.SqlDbType = SqlDbType.Int;
pintErrorNumber.Direction = ParameterDirection.Output;
command.Parameters.Add(pintErrorNumber);
connection.Open();
command.ExecuteScalar();
connection.Close();
}
}
En utilisant profileur SQL, je peux extraire les éléments suivants:
declare @p3 xml
set @p3=null
declare @p4 xml
set @p4=convert(xml,'***Redacted - This is however, valid xml, which convert works on happily***')
declare @p6 int
set @p6=NULL
exec
sp_executesql
N'Search.usp_Search',
N'@pxmlSearchOutput xml output,@pxmlSearchInput xml,@pbitDebug bit,@pintErrorNumber int output',
@[email protected] output,
@[email protected],
@pbitDebug=0,
@[email protected] output
select @p3, @p6
Je suis incapable de diagnostiquer exactement ce qui ne va pas avec le SQL (et donc, comment il se rapporte au code .net). Des idées?
Genius! Merci de votre aide. J'ai ajouté le command.CommandType = STP et tout est doré. – Gregory
Whoops se demandait pourquoi cela ne fonctionnait pas pour moi aussi mais oui bien sûr, avait oublié le type de commande: \ Merci;) – Rabid