EFフレームを使用して、出力パラメータ(output)を含む格納プロセスを起動します.
4411 ワード
使用するデータベース:Sql Server 2012
IDE:VS 2017
EFフレームバージョン:6.4.0
保存プロセス
注意したいのは、以下の行のコードは、出力型パラメータに対して、文字列は長さを設定しなければなりません. 「String[1]:Size属性は無効サイズ値0を有する」
IDE:VS 2017
EFフレームバージョン:6.4.0
保存プロセス
CREATE PROCEDURE p_test
@id int,@returnText nvarchar(Max) output
AS
BEGIN
DECLARE @name nvarchar(20)
select @name= Name from [dbo].[party_member] where ID=@id
set @returnText=' :'+@name
END
GO
コードの呼び出し(C⼰)public string getText(int id)
{
List paramArray = new List();
paramArray.Add(new SqlParameter("@id", id));
SqlParameter p = new SqlParameter("@returnText", SqlDbType.NVarChar,30);
p.Direction = ParameterDirection.Output;
paramArray.Add(p);
using(PAMSDBContext db = new PAMSDBContext())
{
try
{
db.Database.ExecuteSqlCommand("exec [p_test] @id,@returnText out", paramArray.ToArray());
}
catch (Exception ex)
{
throw;
}
string text = (string)paramArray[1].Value;
return text;
}
}
注意したいのは、以下の行のコードは、出力型パラメータに対して、文字列は長さを設定しなければなりません. 「String[1]:Size属性は無効サイズ値0を有する」
SqlParameter p = new SqlParameter("@returnText", SqlDbType.NVarChar,30);