ADO.NET을 사용하여 테이블 값 매개 변수 전달
ADO를 사용하여 테이블 값 매개 변수를 저장 프로시저에 전달하는 방법.NET?
SQL Server에 유형 생성:
CREATE TYPE [dbo].[MyDataType] As Table ( ID INT, Name NVARCHAR(50) )
생성 절차:
CREATE PROCEDURE [dbo].[MyProcedure] ( @myData As [dbo].[MyDataType] Readonly ) AS BEGIN SELECT * FROM @myData END
C#에서 데이터 테이블 만들기:
DataTable myDataTable = new DataTable("MyDataType"); myDataTable.Columns.Add("Name", typeof(string)); myDataTable.Columns.Add("Id", typeof(Int32)); myDataTable.Rows.Add("XYZ", 1); myDataTable.Rows.Add("ABC", 2);
SQL 매개 변수 만들기:
SqlParameter parameter = new SqlParameter(); parameter.ParameterName = "@myData"; parameter.SqlDbType = System.Data.SqlDbType.Structured; parameter.Value = myDataTable; command.Parameters.Add(parameter);
이것을 시도해 보았더니 다음과 같은 예외가 발생했습니다.
테이블 형식 매개 변수 '@MyDataType'에는 올바른 형식 이름이 있어야 합니다.
SqlParameter의 "TypeName" 속성을 설정해야 했습니다.
parameter.TypeName = "MyDataType";
이 질문은 테이블 값 매개 변수를 .net 코드에서 저장 프로시저로 전달하는 방법을 복제한 것입니다.다음 중 하나를 사용하는 예를 보려면 해당 질문을 참조하십시오.DataTable
또는IEnumerable<SqlDataRecord>
.
다국어 사용자의 경우, 쇼에 조금 늦습니다.
tsql의 다른 곳에
--- create a vector data type
CREATE TYPE [dbo].[ItemList] AS TABLE([Item] [varchar](255) NULL)
b)
Dim Invoices As New DataTable("dbo.ItemList") 'table name is irrelevant
Invoices.Columns.Add("Invoice", GetType(String))
...
With .SqlCommand.Parameters
.Clear()
.Add(New Data.SqlClient.SqlParameter() With {
.SqlDbType = Data.SqlDbType.Structured,
.Direction = Data.ParameterDirection.Input,
.ParameterName = "@Invoices",
.TypeName = "dbo.ItemList",
.Value = Invoices})
End With
...
' using store procedure
.CommandText = "SELECT * FROM dbo.rpt(@invoices) "
' or direct reference is a select
.CommandText = "SELECT * FROM dbo.invoicedata" +
"where ((select count(*) from @invoices) = 0 or "+
"InvoiceNumber in (select distinct * from @Invoices))
Exec으로 접두사를 붙일 수 있습니다.
using( SqlConnection con = new SqlConnection( "Server=.;database=employee;user=sa;password=12345" ) )
{
SqlCommand cmd = new SqlCommand( " exec ('drop table '+@tab)" , con );
cmd.Parameters.AddWithValue( "@tab" ,"Employee" );
con.Open( );
cmd.ExecuteNonQuery( );
}
언급URL : https://stackoverflow.com/questions/10409576/pass-table-valued-parameter-using-ado-net
'programing' 카테고리의 다른 글
도커: "매니페스트 목록 항목에 windows/amd64와 일치하는 매니페스트가 없습니다." (0) | 2023.08.07 |
---|---|
jQuery UI 정렬 가능 위치 (0) | 2023.08.07 |
스프링 @자동 배선 속성 대 세터 (0) | 2023.08.07 |
pkl 파일의 압축을 푸는 방법은? (0) | 2023.08.07 |
대체 패턴에서 그룹 캡처에 대한 역참조 처리 (0) | 2023.08.07 |