Utilizzo del codice XML nelle colonne calcolateUse XML in Computed Columns

Le istanze XML possono rappresentare o l'origine o il tipo di una colonna calcolata.XML instances can appear as a source for a computed column, or as a type of computed column. Gli esempi contenuti in questo argomento mostrano come utilizzare il codice XML con le colonne calcolate.The examples in this topic show how to use XML with computed columns.

Creazione di colonne calcolate da colonne XMLCreating Computed Columns from XML Columns

Ad esempio, nell'istruzione seguente CREATE TABLE una colonna di tipo xml (col2) viene calcolata da col1:In the following CREATE TABLE statement, an xml type column (col2) is computed from col1:

CREATE TABLE T(col1 varchar(max), col2 AS CAST(col1 AS xml) )    

Il tipo di dati xml può inoltre rappresentare l'origine per la creazione di una colonna calcolata, come illustrato nell'istruzione CREATE TABLE seguente:The xml data type can also appear as a source in creating a computed column, as shown in the following CREATE TABLE statement:

CREATE TABLE T (col1 xml, col2 as cast(col1 as varchar(1000) ))   

È possibile creare una colonna calcolata mediante l'estrazione di un valore da una colonna di tipo xml , come illustrato nell'esempio seguente.You can create a computed column by extracting a value from an xml type column as shown in the following example. Poiché non è possibile usare direttamente i metodi con tipo di dati xml per la creazione di colonne calcolate, nell'esempio viene definita innanzitutto una funzione (my_udf) che restituisce un valore da un'istanza XML.Because the xml data type methods cannot be used directly in creating computed columns, the example first defines a function (my_udf) that returns a value from an XML instance. La funzione esegue il wrapping del metodo value() del tipo xml .The function wraps the value() method of the xml type. Il nome della funzione viene quindi specificato nell'istruzione CREATE TABLE per la colonna calcolata.The function name is then specified in the CREATE TABLE statement for the computed column.

CREATE FUNCTION my_udf(@var xml) returns int  
AS BEGIN   
RETURN @var.value('(/ProductDescription/@ProductModelID)[1]' , 'int')  
END  
GO  
-- Use the function in CREATE TABLE.  
CREATE TABLE T (col1 xml, col2 as dbo.my_udf(col1) )  
GO  
-- Try adding a row.   
INSERT INTO T values('<ProductDescription ProductModelID="1" />')  
GO  
-- Verify results.  
SELECT col2, col1  
FROM T  

Come il precedente, l'esempio successivo definisce una funzione per la restituzione di un'istanza con tipo di dati xml per una colonna calcolata.As in the previous example, the following example defines a function to return an xml type instance for a computed column. All'interno della funzione, il metodo query() con tipo di dati xml recupera un valore da un parametro del tipo xml .Inside the function, the query() method of the xml data type retrieves a value from an xml type parameter.

CREATE FUNCTION my_udf(@var xml)   
  RETURNS xml AS   
BEGIN   
   RETURN @var.query('ProductDescription/Features')  
END  

Nell'istruzione seguente CREATE TABLE , Col2 rappresenta una colonna calcolata che utilizza i dati XML (elemento<Features> ) restituiti dalla funzione:In the following CREATE TABLE statement, Col2 is a computed column that uses the XML data (<Features> element) that is returned by the function:

CREATE TABLE T (Col1 xml, Col2 as dbo.my_udf(Col1) )  
-- Insert a row in table T.  
INSERT INTO T VALUES('  
<ProductDescription ProductModelID="1" >  
  <Features>  
    <Feature1>description</Feature1>  
    <Feature2>description</Feature2>  
  </Features>  
</ProductDescription>')  
-- Verify the results.  
SELECT *  
FROM T  

Argomenti della sezioneIn This Section

ArgomentoTopic DescrizioneDescription
Promuovere i valori XML di uso frequente mediante colonne calcolatePromote Frequently Used XML Values with Computed Columns Viene descritta la modalità di utilizzo della promozione della proprietà con colonne calcolate e tabelle delle proprietà.Describes how to use property promotion with computed columns and property tables.