이 글 쓰고 3년이 지난 지금 아래처럼 써 본 기억이 없음..
MSSQL 에서 사용자 정의 테이블 생성하고 C#에서 Parameter로 Object 형식으로 넘기고..
프로시저에서는 아래처럼 받아서 사용함..
ALTER PROCEDURE [dbo].[BlahBlah]
(
@VarTable UserDefinesTableName READONLY
)
AS
UserDefinesTableName--> 사용자 정의 테이블 변수 명
CREATE TYPE [dbo].[UserDefinesTableName] AS TABLE(
[Column1] [varchar](20) NULL,
[Column2] [varchar](10) NULL,
[Column3] [numeric](18, 3) NULL
)
GO
아래는 XML 방식(지금은 이렇게 안 함. 뭐가 더 좋은 방법인지는 모르겠으나 귀찮고 복잡함)
1
2
3
4
5
6
7
8
9
10
11
|
//C#
DataTable dtTemp = new DataTable();
dtTemp = ((DataTable)Grid1.DataSource).Copy();
DataSet dsTemp = new DataSet("NAMESPACE");
dtTemp.TableName = "TABLE";
dsTemp.Tables.Add(dtTemp);
SqlParameter s1 = new SqlParameter();
s1.Value = dsTemp.GetXml();
//sql parameter
cmd.Parameters.Add(new SqlParameter("@TMPTABLE", s1.Value));
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
--MSSQL 프로시저에서 TEXT TYPE으로 받음
@TMPTABLE TEXT
DECLARE @CXML XML=CAST(@TMPTABLE AS XML)
--XML 컬럼 대소문자 구별 주의
SELECT
XTab.value('NO[1]','INT') AS [NO],
XTab.value('ItemCode[1]','VARCHAR(30)') AS [ITEMCODE],
XTab.value('ItemName[1]','VARCHAR(100)') AS [ITEMNAME],
XTab.value('LotNo[1]','VARCHAR(30)') AS [LOTNO],
XTab.value('Qty[1]','FLOAT') AS [QTY],
XTab.value('UnitCode[1]','VARCHAR(30)') AS [UNITCODE],
XTab.value('TakingNo[1]','VARCHAR(50)') AS [TAKINGNO],
XTab.value('WHCode[1]','VARCHAR(30)') AS [WHCODE],
XTab.value('Worker[1]','VARCHAR(30)') AS [WORKER]
INTO #TMP
FROM @CXML.nodes('NAMESPACE/TABLE') XTab([XTab])
|
cs |
'C#' 카테고리의 다른 글
C# 정규식을 이용하여 문자열이 숫자인지 판단 (0) | 2019.09.19 |
---|---|
C# ListView 복사 붙여넣기 (0) | 2019.09.19 |
C# Excel을 PDF (0) | 2019.09.18 |
C# MSSQL LEFT, RIGHT 와 동일한 함수 (0) | 2018.12.22 |
C# Excel 업로드 (0) | 2018.12.22 |