sql-server - SQL Server 中的字符串连接问题

标签 sql-server

ALTER PROCEDURE [dbo].[InsertSMS]
-- Add the parameters for the stored procedure here
@SmsMsgDesc Nvarchar(Max)

AS
BEGIN

SET NOCOUNT ON;

INSERT INTO [Tbl_Log]([LogDescription])VALUES (@SmsMsgDesc)
declare @LogID int;
SET @LogID = CAST(SCOPE_IDENTITY() AS INT)

INSERT INTO [Tbl_SMS]
       ([SmsMsgDesc])
 VALUES
       **(@SmsMsgDesc+CAST(@LogID AS NVarchar(12)))**

END

这里的问题是有时连接不会连接最后一个字符串,我不知道为什么

即使我这样做

INSERT INTO [Tbl_SMS]
       ([SmsMsgDesc])
 VALUES
       **(@SmsMsgDesc+'Test')**

常量“Test”有时不会出现在字符串末尾,这让我发疯,请帮忙!

我使用以下 C# 函数调用此过程:-

public int InsertSMSDB(string Message)
    {
        try
        {
            //int LogID;
            SqlConnection Conn=new SqlConnection(SmsDBConnection);
            SqlCommand Comm = new SqlCommand("InsertSMS", Conn);
            Comm.CommandType = System.Data.CommandType.StoredProcedure;

            Comm.Parameters.AddWithValue("@SmsMsgDesc", Message);

            Conn.Open();
            int RowEffected=Comm.ExecuteNonQuery();
            Conn.Close();

            if (RowEffected > 0)
            {
                return RowEffected;
            }
            else
            {
                return -1;
            }


        }
        catch (SqlException ex)
        {
            return -1;
        }
    }

最后,一些信息可能有助于调查应用程序中的这种情况,有 2 个线程访问 Tbl_SMS,一个线程用于插入,1 个线程用于选择

最佳答案

如果传递给过程 @SmsMsgDesc 的值为 null,则它将不会连接

尝试这样做以避免空值

VALUES
       (isnull(@SmsMsgDesc,'')+CAST(@LogID AS NVarchar(12)))

或者

您可以更改过程标题

ALTER PROCEDURE [dbo].[InsertSMS]
@SmsMsgDesc Nvarchar(Max)=''

关于sql-server - SQL Server 中的字符串连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12798253/

相关文章:

SQL Server - 有条件地增加计数器

sql-server - 如何在没有 IDENTITY 的 Azure SQL 中创建顺序自动编号字段?

c# - 调用存储过程返回 30 个字符中的 1 个

sql-server - 调用目标抛出异常 (mscorlib)

c# - 无法更新 .mdf 数据库,因为数据库是只读的(Windows 应用程序)

执行 20 万行 SQL 查询需要一个多小时

sql-server - 将 sql server 查询更改为 sqlite

sql-server - 在我的情况下是 NOLOCK、Snapshot 还是其他?

java - SQL Server JDBC 的驱动程序类名称是什么

c# - 在SQL中选择TOP行,得到5行尾表