尝试从 Blazor App= Entity Framework 中的 MS Sql Server 存储过程返回字符串。
的后续in-ap代码是
string outList = "";
var xparams = new SqlParameter[]{
new SqlParameter("@Start", 10),
new SqlParameter("@End", 20),
new SqlParameter("@output",outList) {Direction = ParameterDirection.Output }
};
_context.Database.ExecuteSqlRaw("exec GetMe @Start, @End, @output output", xparams);
var ReturnValue = ((SqlParameter)xparams[2]).Value;
问题是返回值只有第一个字符。 SP参数是:
@Start int ,
@End int,
@output varchar(50) output
作业是:
Select @output = 'This is some text';
Return
我猜这与多维数据有关。
您可以通过更改 SqlParameter 输出并添加数据类型 SqlDbType.NVarChar 或 SqlDbType.VarChar 来解决问题
正确的代码
var xparams = new SqlParameter[]{
new SqlParameter("@Start", 10),
new SqlParameter("@End", 20),
new SqlParameter("@output",SqlDbType.NVarChar, 4000) {Direction = ParameterDirection.Output }
};
SchoolContext _context = new SchoolContext();
_context.Database.ExecuteSqlRaw("exec GetMe @Start, @End, @output output", xparams);
var ReturnValue = ((SqlParameter)xparams[2]).Value;
SqlParameter 有 7 个构造函数
你使用构造函数编号 1
您必须使用 2 号或 3 号构造函数
1.SqlParameter(string parameterName, object value)
2.SqlParameter(string parameterName, SqlDbType dbType, int size)
3.SqlParameter(string parameterName, SqlDbType dbType)
4.SqlParameter()
5.SqlParameter(string parameterName, SqlDbType dbType, int size, ParameterDirection direction, bool isNullable, byte precision, byte scale, string sourceColumn, DataRowVersion sourceVersion, object value)
6.SqlParameter(string parameterName, SqlDbType dbType, int size, ParameterDirection direction, byte precision, byte scale, string sourceColumn, DataRowVersion sourceVersion, bool sourceColumnNullMapping, object value, string xmlSchemaCollectionDatabase, string xmlSchemaCollectionOwningSchema, string xmlSchemaCollectionName)
7.SqlParameter(string parameterName, SqlDbType dbType, int size, string sourceColumn)