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/