C# calling SQL Server stored procedure only add first character of varchar field only

Viewed 50

I have this C# code

try
{
    using (var conn = new SqlConnection(connectionString))
    using (var command = new SqlCommand("deepstoredProc", conn)
               {
                   CommandType = CommandType.StoredProcedure
               })
    {
        command.Parameters.Add("@recid", SqlDbType.Int).Value = Int32.Parse(recid);
        command.Parameters.Add("@jsonstr", SqlDbType.VarChar, -1).Value = jsonstr;
        command.Parameters.Add("@text", SqlDbType.VarChar, -1).Value = txt;

        conn.Open();
        command.ExecuteNonQuery();
    }
}
catch(Exception e)
{
    WriteToSysLog("Exception execSP() " + e.Message);
}
finally
{
}

This is the SQL Server stored procedure. I am having trouble only with the update query

USE [testDatabase]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[deepstoredProc] 
    @recid int, 
    @jsonstr nvarchar(max), 
    @text nvarchar(max)
AS
BEGIN
    UPDATE table1 
    SET transcript = @text, 
        field1 = 'Y' 
    WHERE recordingid = @recid

    INSERT INTO othertable  
    VALUES (@recid, '', 'textvalue1', COMPRESS(@jsonstr), 'en')

    INSERT INTO othertable  
    VALUES (@recid, '', 'textvalue2', COMPRESS(@text), 'en')
END

This only updates table1 transcript field with the first character of the @text value

The table column is defined as varchar(max).

Also note that when I run the update script in SSMS, it executes perfectly.

This is a strange problem and appreciate any help.

0 Answers
Related