PetaPoco를 사용하여 SQL Server 2008 R2 저장 프로 시저를 호출하려고합니다.PetaPoco를 사용하여 저장 프로 시저에 테이블 값 매개 변수를 전달하십시오.
내 저장 프로 시저에서 테이블 반환 매개 변수를 허용합니다.
어떻게 테이블 값 param을 사용하여 petapoco에서 저장 프로 시저를 호출 할 수 있습니까?
var db = new PetaPoco.Database("repikaciskaBaza");
DataTable table = new DataTable();
DataColumn id = table.Columns.Add("id", type: typeof(Int32));
for (int i = 0; i < 10;i++)
{
DataRow row = table.NewRow();
row["id"] = i;
table.Rows.Add(row);
}
var param = new SqlParameter();
param.DbType = DbType.Object;
param.ParameterName = "@art_id";
param.SqlValue = table;
var lista = db.Query<pocoArts>(";exec dbo.test_sporc_param @0", param);
를이 코드는 나에게 예외 제공 : 내가 뭘하려고 오전 여기
들어오는 테이블 형식 데이터 스트림 (TDS) 원격 프로 시저 호출 (RPC) 프로토콜 스트림이 잘못되었습니다 .
매개 변수 3 ("@ 0") : 데이터 형식 0x62 (sql_variant)에 형식 별 메타 데이터 형식이 잘못되었습니다. 내가param.SqlDbType = SqlDbType.Structured;
그런 parametar 타이 값을 설정하면
내가 얻을 예외 같은
The table type parameter '@0' must have a valid type name.
내가
param.SqlDbType = SqlDbType.Structured;
param.SqlValue = table;
param.ParameterName = "@art_id";
param.TypeName = SqlDbType.Structured.ToString();
처럼 내 PARAM가 그럼 난 예외가 정의
열, 매개 변수 또는 변수 @ 0. : 데이터 형식 Structured를 찾을 수 없습니다.
SqlParam
을 테이블 반환 값 param으로 정의하면 SQL Server에 데이터를 보낼 수 있습니까?
솔루션 :
var param = new SqlParameter();
param.SqlDbType = SqlDbType.Structured; // According to marc_s
param.SqlValue = table;
param.ParameterName = "@art_id";
param.TypeName = "dbo.typ_art_id"; // this is TYP from SQL Server database it needs to be equal to type defined in SQL Server not type of param
나는 그것을했다. 그리고 지금 나는 다른 예외를 가지고있다 – adopilot
나는 통과했다, Thanx on help 나의 편집을 보라. – adopilot