Параметр SQL Out получен как ноль при передаче из C # - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь заполнить значение в параметре 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);
    }
}

Невозможно передать значение в выходной параметр или я что-то упустил? Может кто-то помочь мне с этим? Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...