Can anyone provide insight into this?
I've developed an import process using an XML data type. After the data is inserted in to a table by the import sProc I run another procedures to update another table with the imported table.
The update procedure throws an exception if it is created with SET QUOTED_IDENTIFIER OFF. I'd like to understand why that is happening.
Here's the code:
DECLARE @xmlRecords XML
SET @xmlRecords = (SELECT importedXML FROM importTable WHERE importId = @lastImportId)
UPDATE o
SET o.ReferralCode = import.refCode
FROM (
SELECT records.record.value('(@orderId)[1]', 'INT') AS orderId,
records.record.value('(@refCode)[1]', 'VARCHAR(15)') AS refCode
FROM @xmlRecords.nodes('/records/record') records(record)
) import
INNER JOIN tblOrder o ON import.OrderId = o.orderId
I'm assuming it has to do with the quoted datatypes ('VARCHAR(15)') or the xml query path elements ('/records/record').
Thanks for any insight you can provide.
A very simple test case
Gives
This is documented in passing here
I haven't seen a reason why this is a requirement for xQuery though.