Я пытаюсь заполнить значение в параметре out
, но оно возвращается как нулевое из хранимой процедуры.
Но оно работает нормально, когда я пытаюсь выполнить запрос через SSMS.
Хранимая процедура:
CREATE PROCEDURE [dbo].[USP_ABCD]
(@signal_xml AS NVARCHAR(MAX) OUT) -- this parameter includes the result in case
AS
BEGIN
DECLARE @signal_data XML
SET @signal_data = cast(@signal_xml as XML)
INSERT INTO DBLog
VALUES ('USP_ABCD', 'test', @signal_xml, ERROR_MESSAGE(), GETUTCDATE())
SET @signal_xml = 'ABCD';
END
Код C #, вызывающий эту хранимую процедуру:
private static void runSP()
{
try
{
var temp = File.ReadAllText(@"abcd\TEST1.txt");
var conStr = System.Configuration.ConfigurationManager.ConnectionStrings["test"].ConnectionString;
using (SqlConnection connection = new SqlConnection(conStr))
{
connection.Open();
SqlCommand command = connection.CreateCommand();
// Setup the command to execute the stored procedure.
command.CommandText = "dbo.USP_ABCD";
command.CommandType = CommandType.StoredProcedure;
// Set up the output parameter to retrieve the summary.
SqlParameter paramSignalXml = new SqlParameter("@signal_xml", SqlDbType.NVarChar, -1);
paramSignalXml.Direction = ParameterDirection.Output;
paramSignalXml.Value = temp;
command.Parameters.Add(paramSignalXml);
// Execute the stored procedure.
command.ExecuteNonQuery();
Console.WriteLine((String)(paramSignalXml.Value));
var retValue = (String)(paramSignalXml.Value);
connection.Close();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Невозможно передать значение в выходной параметр или я что-то упустил? Может кто-то помочь мне с этим? Заранее спасибо.