mysql - Use Delete table query in stored procedure only when xml data is passed from C# to stored procedure -


here xml data of table passing backend c# stored procedure.

<arrayofuserdata xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema">  <userdata>          <name>dovyan<name />          <id>434556464<id />  </userdata>  <userdata>          <name>alex<name />          <id>12345767<id /> </userdata> </arrayofuserdata> 

this stored procedure using

use [database] go set ansi_nulls on go set quoted_identifier on  go   alter procedure [database].[sp_saveusertable]  (   @in_params xml )  begin delete dbo.usertable;   //use when xml data present. how part ? select  t.x.value('./name[1]','varchar(6)') [name] ,  t.x.value('./id[1]','varchar(75)') [id]   #temp @in_params.nodes('/arrayofuserdata/userdata') t(x);   begin transaction  insert [dbo].[usertable](name,id) select name,id #temp t  commit transaction drop table #temp;  end 

here query. can see, first deleting table , saving xml data table. there scenario when xml data empty. stored procedure delete table no new data saved empty.

i want put condition delete table when there xml data. if there no xml data, donot delete table. way ?

1) assuming after execution of procedure ends data usertable read procedure isn't safe within concurent environment. if 2 connections execute same procedure (with diff. xml data) , read inserted data 1 connection can read data inserted second connection. desired behavior ?

2) use

select  t.x.value('./name[1]','varchar(6)') [name] ,  t.x.value('./id[1]','varchar(75)') [id]  #temp @in_params.nodes('/arrayofuserdata/userdata') t(x); if @@rowcount > 0 -- num of affetected rows begin     delete dbo.usertable;        ... end else begin ... end