IF EXISTS (SELECT 1 FROM sysobjects WHERE name='pd_invoice_save' AND type ='P') DROP PROC pd_invoice_save go CREATE PROC pd_invoice_save ( @TradeType VARCHAR(16), --10挂号 20门诊 30住院 @TradeID VARCHAR(64), @XMLValue XML ) WITH ENCRYPTION AS DECLARE @ParaTable TABLE ( binvkind varchar(200) ,-- 数值 2 0 varchar(200) ,--专用发票、2 –普通发票、11 varchar(200) ,--货运发票、41 varchar(200) ,--卷票普通发票、51 varchar(200) ,--电子普通发票 binvcode varchar(200) ,--字符 10 发票代码 binvnr varchar(200) ,--数值 发票号码 binvdate varchar(200) ,--日期 开票日期 bmachinenr varchar(200) --字符 3 开票机号 ) ;WITH XMLNAMESPACES(DEFAULT 'http://www.XXXXXX.com.cn') --有命名空间的,在这里带上命名空间 INSERT INTO @ParaTable ( binvkind , --数值 2 0 , --专用发票、2 –普通发票、11 , --货运发票、41 , --卷票普通发票、51 , --电子普通发票 binvcode , --字符 10 发票代码 binvnr , --数值 发票号码 binvdate , --日期 开票日期 bmachinenr --字符 3 开票机号 ) SELECT T.d.value('(binvkind/value/text())[1]','varchar(256)') AS binvkind, --节点里面还可以在嵌套节点 T.d.value('(binvcode/text())[1]','varchar(256)') AS binvcode, T.d.value('(binvnr/text())[1]','varchar(256)') AS binvnr , T.d.value('(binvdate/text())[1]','varchar(256)') AS binvdate, T.d.value('(bmachinenr/text())[1]','varchar(256)') AS bmachinenr FROM @XMLValue.nodes('siiscmd/sendbackinv/sendbackinvrecord/sendbackinvrecordhead') AS T(d) SELECT * FROM @ParaTable