将数据写入xml然后插入table的过程

if (null != ds && ds.Tables.Count > 0)
                    {
                        sb.Append("<?xml version=\"1.0\" encoding=\"gb2312\" ?><ROOT>");
                        DataTable dt = ds.Tables[0];
                        if (null != dt && dt.Rows.Count > 0)
                        {
                            foreach (DataRow item in dt.Rows)
                            {
                                sb.Append("<NC>");
                                sb.AppendFormat("<PK_CoRP>{0}</PK_CoRP>", item["PK_CoRP"].ToString());
                                sb.AppendFormat("<deptcode>{0}</deptcode>", item["deptcode"].ToString());
                                sb.AppendFormat("<fyx>{0}</fyx>", item["fyx"].ToString());
                                sb.AppendFormat("<je>{0}</je>", item["je"].ToString());
                                sb.Append("</NC>");
                            }
                        }
                        else
                        {
                            sb.Append("<NC>");
                            sb.AppendFormat("<PK_CoRP>{0}</PK_CoRP>", "");
                            sb.AppendFormat("<deptcode>{0}</deptcode>", "");
                            sb.AppendFormat("<fyx>{0}</fyx>", "");
                            sb.AppendFormat("<je>{0}</je>", "");
                            sb.Append("</NC>");
                        }
                        sb.Append("</ROOT>");
                    }

 

ALTER PROCEDURE [dbo].[YD_FY_getYSDX]
@m_XML text ,    --NC查过来的数据
@FYXMDZID VARCHAR(200)  --预算对象ID
AS

declare @hdoc int
 exec sp_xml_preparedocument @hdoc output,@m_XML
 --把插过来的数据存入临时表中
 
SELECT * INTO ##NCDBYSDX
FROM OPENXML (@hdoc, '/ROOT/NC',1)
WITH (PK_CoRP int 'PK_CoRP',
deptcode varchar(50) 'deptcode',
fyx varchar(50)  'fyx',
je FLOAT 'je')

declare @sql varchar(8000)
select @sql ='SELECT FYXMDZID AS initID,BMXXID AS DeptID,DeptName,RYXXID AS UserID,UserName,NCDEPTCODE AS NC_YS,
NCDeptName AS NC_YSName, a.PK_CORP AS NC_JGID,PK_DEPTDOC AS NC_DeptID ,NCUNITCODE AS NC_JGNO,
NCUNITNAME AS NC_JGName,d.JE as LPYSJE,e.JE as YPYSJE
FROM dbo.YD_FY_YuSuanDuiZhao a
LEFT OUTER JOIN dbo.Department b ON b.DeptID = a.BMXXID
LEFT OUTER JOIN  dbo.Users c ON c.UserID = a.RYXXID
left outer join ##NCDBYSDX d on (a.PK_CORP=d.PK_CORP and a.NCDEPTCODE=d.DEPTCODE and d.FYX=''领用礼品'')
left outer join ##NCDBYSDX e on (a.PK_CORP=e.PK_CORP and a.NCDEPTCODE=e.DEPTCODE and e.FYX=''办公用品'')
where FYXMDZID='''+@FYXMDZID+''''
--PRINT @sql
 exec(@sql)
if object_id('tempdb..##NCDBYSDX') is not NULL
DROP TABLE ##NCDBYSDX

转载于:https://www.cnblogs.com/wuquelin/articles/3089887.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值