回答

收藏

存储过程-将参数作为xml传递并读取数据

技术问答 技术问答 282 人阅读 | 0 人回复 | 2023-09-12

我有此存储过程,该过程从xml读取数据并进行一些插入
; S8 Y2 u) Z+ h0 a9 H5 q: B# |ALTER procedure [dbo].[SP_InsertIOs]
: F2 a8 N6 a& m$ U/ t    @iosxml xml AS0 H# g3 m' I2 t9 k1 h/ T
DECLARE @currRecord int
) c8 Y% \; b- R' M. g  H. i-- parse the records from the XML
# h& K- _/ ]8 X# [( m+ k( O  EXECUTE sp_xml_preparedocument @currRecord OUTPUT, @iosxml     7 D# f( X9 T; {* A
  BEGIN TRY       # w! T2 ]6 ]9 p' Y+ F  i
   INSERT INTO SN_IO ( [C1] ,[C2]  ,[C3] )3 }$ A; {! O/ `; D1 Z# s
   SELECT [C1] ,[C2] ,[C3]/ o+ D: T- y. x& u/ l( d: ^- F
   FROM OPENXML (@currRecord, 'ios/io', 1)$ g; Y3 F5 j! V  r7 F0 W6 O  F
   WITH ([C1] [varchar](25)       'C1',; I7 V& n$ d$ ]0 f6 ]& J  W
         [C2] [varchar](25)       'C2',* ~9 y" s0 y! I+ M
         [C3] [varchar](20)       'C3'  )                                                                  # E9 N) l! c' @" z( h/ w& |0 }  s
    END TRY. o# a0 h% ?$ e0 p
    BEGIN CATCH
/ e; z/ }# B. n% V1 \. `% ]% t        //SELECT SOME ERROR
4 i8 L; Z* W2 O! t5 Z    END CATCH; u3 n; M, g1 h! h* _/ q. v
    EXECUTE sp_xml_removedocument @currRecord
! Y5 L. a8 Z) I/ n7 ^/ Rxml看起来像这样) }9 R0 u. K' \3 M8 Z
- P! c1 M3 [( a2 s  R- E
  
* B+ H0 i- t6 |" X. A8 p    a/ l0 L( u8 P$ c3 {; [
    b
1 A9 A* X( h1 O+ v& s$ _8 Z: d    c    7 @+ g* `6 O% w/ G& F- u
  

  y' X5 j2 i  U; Q  . _* Z5 U  U2 g3 F3 s4 e7 z  D
    x3 Q5 a6 s* B' ]" e
    y# R1 u' p* L7 m* [
    z
' P5 n8 h) A& _1 `  
8 [0 G# ~& j! L. s- i  i. F

/ O$ O7 ^/ g5 \9 A一切顺利。有时C1或C2或C3可以为空,这是我的问题:
: c1 W7 }. F' L! l  S, I在该过程中,如果插入时C1为空或C2为空或C3为空,则跳过该记录而不进行插入+ `# I( N% w# B/ @+ D: L. s9 s
                . L+ K6 g) v, |3 `1 z" ?2 u
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则