| 
	
 | 
 Posted by Erland Sommarskog on 06/26/06 22:21 
rhaazy (rhaazy@gmail.com) writes: 
> INSERT INTO #temp 
> SELECT *  FROM openxml(@iTree, 
> 'ComputerScan/scans/scan/scanattributes/scanattribute', 1) 
>                 WITH( 
>                         ID nvarchar(50) './@ID', 
>                         ParentID nvarchar(50) './@ParentID', 
>                         Name nvarchar(50) './@Name', 
>                         scanattribute nvarchar(50) '.' 
>                         ) 
>  
> Now here is the insert statement for the table I am having trouble 
> with. 
>  
> INSERT INTO tblScanDetail (MAC, GUIID, GUIParentID, ScanAttributeID, 
> ScanID, AttributeValue, DateCreated, LastModified) 
>         SELECT @MAC, #temp.ID, #temp.ParentID, 
> tblScanAttribute.ScanAttributeID, tblScan.ScanID, 
>                 #temp.scanattribute, DateCreated = getdate(), 
> LastModified = 
> getdate() 
>         FROM tblScan, tblScanAttribute JOIN #temp ON 
> tblScanAttribute.Name = 
> #temp.Name 
>  
> If there is a way to do this without the temporary table that would be 
> great, but I haven't figured a way around it yet, if anyone has any 
> ideas that would be great, thanks. 
 
I have some difficulties to understand what your problem is. If all 
you want to do is to insert from the XML document, then you don't 
need the temp table, but you could use OPENXML directly in the  
query. 
 
But then you talk about an UPDATE as well, and if your aim is to insert 
new rows, and update existing, it's probably better to use a temp  
table (or a table variable), so that you don't have to run OPENXML twice. 
Some DB engines support a MERGE command which performs the task of 
UPDATE and INSERT in one statement, but this is not available in  
SQL Server, not even in SQL 2005. 
 
If this did not answer your question, could you please clarify? 
 
--  
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se 
 
Books Online for SQL Server 2005 at 
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx 
Books Online for SQL Server 2000 at 
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
 
[Back to original message] 
 |