Well, here is the routine I run nightly. I'll explain it at the end of the post....
SELECT ItemNumber, (QtyOnHand - QtyOnSalesOrder) AS QOH
INTO #PatchInventoryCounts
FROM
OPENQUERY(MAS90,'SELECT ItemNumber, QtyOnHand, QtyOnSalesOrder
FROM IM2_InventoryItemWhseDetl
WHERE ItemNumber LIKE ''S-%''
OR ItemNumber LIKE ''P%''
OR ItemNumber=''PIN001''
OR ItemNumber LIKE ''BP%''')
UPDATE dbo.Smith_Products
SET QuantityOnHand = #PatchInventoryCounts.QOH
FROM #PatchInventoryCounts
WHERE ModelNumber = #PatchInventoryCounts.ItemNumber
... OK, what it's doing is getting the Item Number and the QOH less the Quantity on Sales order from MAS90, and putting that information into a temporary table. THe OPENQUERY is used because the MAS90 database is a linked server. You *COULD* use this same method to write a stored procedure to open an Excel document instead.
The next portion updates the Smith_Products table, setting the QuantityOnHand from the information in the temporary table that was built.
I suppose that in retrospect I *could* have done this whole thing without the temporary table, however sometimes the connection to MAS can be a little flaky, and I wanted to make sure that step 1 finished before step 2 executed.
I'm digging a little further into how to do this directly from an Excel file; perhaps two SP's... one to create the excel sheet, and one to update the Smith_Products table from the excel sheet when you were through making changes.
If you'd like to go that route, it sounds like a fun little challenge to me... I could write that and post the two SP's here for you.
As you can see, UPDATE statements in SQL are very straightforward, and very simple to do. Easier than inserts, even.
I don't have a comment on the quote from the manual; obviously I didn't write the manual, but I certainly agree with your interpretation of the quote, so I retract my statement about the routine not being "broken".
--Greg