当谈到 SQL 时,我是一个新手。在创建具有以下参数的存储过程时:
@executed bit,
@failure bit,
@success bit,
@testID int,
@time float = 0,
@name varchar(200) = '',
@description varchar(200) = '',
@executionDateTime nvarchar(max) = '',
@message nvarchar(max) = ''
这是 T-SQL 中默认值的正确形式吗?我尝试使用 NULL 而不是 ''。
当我尝试通过 C# 执行此过程时,我收到一个错误,指的是预期但未提供描述这一事实。当这样调用它时:
cmd.Parameters["@description"].Value = result.Description;
结果。描述为空。这不应该在 SQL 中默认为 NULL(在我的情况下是 '')吗?
这是调用命令:
cmd.CommandText = "EXEC [dbo].insert_test_result @executed,
@failure, @success, @testID, @time, @name,
@description, @executionDateTime, @message;";
...
cmd.Parameters.Add("@description", SqlDbType.VarChar);
cmd.Parameters.Add("@executionDateTime", SqlDbType.VarChar);
cmd.Parameters.Add("@message", SqlDbType.VarChar);
cmd.Parameters["@name"].Value = result.Name;
cmd.Parameters["@description"].Value = result.Description;
...
try
{
connection.Open();
cmd.ExecuteNonQuery();
}
...
finally
{
connection.Close();
}