gpt4 book ai didi

c# - 存储过程参数仅返回第一个字符

转载 作者:行者123 更新时间:2023-11-30 13:35:22 25 4
gpt4 key购买 nike

我有一个存储过程和一些 C# 调用它。我的问题是两个 (N)VARCHAR 值都只返回第一个字符。其他一切都很好。为什么只返回第一个字符?

所以

Content = (string)cmd.Parameters["@SmsContent"].Value,
ToNumber = (string) cmd.Parameters["@ToNumber"].Value,

两者都只返回第一个字符。

这是我的存储过程:

ALTER PROCEDURE [dbo].[GetNextSms]
(
@SmsId UNIQUEIDENTIFIER OUTPUT,
@SmsContent NVARCHAR OUTPUT,
@ToNumber VARCHAR OUTPUT,
@TimeAccepted DATETIME OUTPUT
)
AS
BEGIN TRANSACTION
-- 1. Get 1 row
SET ROWCOUNT 1
SELECT @SmsId = SmsId FROM SendQueue
WHERE ProcessingStarted = 0
SET ROWCOUNT 0
-- 2. Set as processing
UPDATE SendQueue
SET ProcessingStarted = 1
WHERE SmsId = @SmsId
-- 3. Return data
SELECT @SmsId = SmsId,
@SmsContent = SmsContent,
@ToNumber = ToNumber,
@TimeAccepted = TimeAccepted
FROM SendQueue
WHERE SmsId = @SmsId;

COMMIT

这是我的 C#

connection.Open();
var cmd = new SqlCommand(@"GetNextSms", connection) {CommandType = CommandType.StoredProcedure};
SqlParameter param = cmd.Parameters.Add("@SmsId", SqlDbType.UniqueIdentifier);
param.Direction = ParameterDirection.Output;
param = cmd.Parameters.Add("@ToNumber", SqlDbType.VarChar,50);
param.Direction = ParameterDirection.Output;
param = cmd.Parameters.Add("@SmsContent", SqlDbType.NVarChar,1024);
param.Direction = ParameterDirection.Output;
param = cmd.Parameters.Add("@TimeAccepted", SqlDbType.DateTime);
param.Direction = ParameterDirection.Output;


if (cmd.ExecuteNonQuery() > 0)
{
sms = new Sms
{
SmsId = ((Guid) cmd.Parameters["@SmsId"].Value),
Content = (string)cmd.Parameters["@SmsContent"].Value,
ToNumber = (string) cmd.Parameters["@ToNumber"].Value,
TimeAccepted = ((DateTime) cmd.Parameters["@TimeAccepted"].Value)
};
}

最佳答案

基于一些搜索(即我还没有尝试过),你也应该用长度声明你的存储过程参数,即

ALTER PROCEDURE [dbo].[GetNextSms]
(
@SmsId UNIQUEIDENTIFIER OUTPUT,
@SmsContent NVARCHAR(1024) OUTPUT,
@ToNumber VARCHAR(50) OUTPUT,
@TimeAccepted DATETIME OUTPUT
)

如果这不是答案,我们深表歉意,但值得一试。似乎同意the MSDN doc表示 NVARCHAR/VARCHAR 的默认长度为 1。

关于c# - 存储过程参数仅返回第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/292988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com