Edit D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\xml\xsl\kuatable.xsl
<?xml version="1.0"?> <!-- Copyright (c) 2006, 2009, Oracle and/or its affiliates.All rights reserved. NAME kuatable.xsl DESCRIPTION Convert sxml TABLE diff document to ALTER_XML document MODIFIED MM/DD/YY rapayne 11/30/08 - bug 7595899: sync with ChangeManager (tableproperties) lbarton 07/10/08 - bug 5709159: SQL_LIST_ITEM subelements rapayne 02/29/08 - Add prameter to AlterConstraints template to support OBJECT_TABLE constraints. pkaliren 03/13/07 - Adding Table properties lbarton 09/22/06 - modularize htseng 08/21/06 - alter iot clause htseng 08/15/06 - htseng 08/07/06 - physical_properities,supplemental_table support htseng 07/20/06 - constraint support rapayne 06/09/06 - lbarton 05/25/05 - Initial version --> <xsl:stylesheet version="1.0" xmlns:sxml="http://xmlns.oracle.com/ku" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- Top level imports --> <xsl:import href="kuacomm.xsl"/> <xsl:import href="kustablc.xsl"/> <xsl:import href="kuatcol.xsl"/> <xsl:import href="kuatpar.xsl"/> <xsl:import href="kuacnstr.xsl"/> <xsl:import href="kuatprop.xsl"/> <xsl:import href="kustbphd.xsl"/> <!-- Top-level parameters --> <xsl:param name="DROP_MISSING_COLUMNS">1</xsl:param> <xsl:param name="NOT_NULL_METHOD">AUTOMATIC</xsl:param> <!-- params for parse --> <xsl:param name="PRS_ALTERABLE">0</xsl:param> <xsl:param name="PRS_NAME">0</xsl:param> <xsl:param name="PRS_CLAUSE_TYPE">0</xsl:param> <xsl:param name="PRS_COLUMN_ATTRIBUTE">0</xsl:param> <xsl:param name="PRS_CONSTRAINT_TYPE">0</xsl:param> <xsl:param name="PRS_CONSTRAINT_STATE">0</xsl:param> <xsl:param name="PRS_PARTITION_TYPE">0</xsl:param> <!-- Templates --> <xsl:template match="sxml:TABLE"> <!-- ******************************************************************* Template: TABLE - top-level template for tables. ******************************************************************** --> <xsl:element name="ALTER_XML"> <xsl:attribute name="xmlns">http://xmlns.oracle.com/ku</xsl:attribute> <xsl:attribute name="version">1.0</xsl:attribute> <!-- Object type --> <xsl:element name="OBJECT_TYPE">TABLE</xsl:element> <!-- Display schema.objname for CoMPareObjects 1 and 2 --> <xsl:call-template name="CmpObjects"> <xsl:with-param name="ParentNode" select="."/> </xsl:call-template> <!-- Alter list --> <xsl:element name="ALTER_LIST"> <!-- table type --> <xsl:call-template name="TableType"> <xsl:with-param name="ParentNode" select="."/> </xsl:call-template> <!-- columns --> <xsl:call-template name="AlterColumns"> <xsl:with-param name="ParentNode" select="."/> </xsl:call-template> <!-- constraints --> <xsl:call-template name="AlterConstraints"> <xsl:with-param name="TableNode" select="."/> <xsl:with-param name="ParentNode" select="sxml:RELATIONAL_TABLE | sxml:OBJECT_TABLE"/> </xsl:call-template> <!-- Table_Properities --> <xsl:call-template name="AlterTableProperties"> <xsl:with-param name="ParentNode" select="."/> </xsl:call-template> <!-- Table_Partitioning --> <xsl:call-template name="AlterTablePartitions"> <xsl:with-param name="ParentNode" select="."/> </xsl:call-template> <!-- table name rename (the last thing we do) --> <xsl:call-template name="RenTable"> <xsl:with-param name="ParentNode" select="."/> </xsl:call-template> </xsl:element> </xsl:element> </xsl:template> <xsl:template name="TableType"> <xsl:param name="ParentNode" select="''"/> <!-- ******************************************************************* Template: TableType - Detects certain non-alterable cases (1) can't interconvert between relational, object or XMLType table (2) can't change object type of object table (3) can't alter partition vs. non-partition Parameters: ParentNode - Parent node of SCHEMA, NAME ******************************************************************** --> <xsl:if test="$ParentNode/sxml:RELATIONAL_TABLE[@src] or $ParentNode/sxml:OBJECT_TABLE[@src] or $ParentNode/sxml:XMLTYPE_TABLE[@src]"> <xsl:element name="ALTER_LIST_ITEM"> <xsl:if test="$PRS_NAME=1 or $PRS_CLAUSE_TYPE=1 or $PRS_COLUMN_ATTRIBUTE=1 or $PRS_ALTERABLE=1 or $PRS_XPATH=1"> <xsl:element name="PARSE_LIST"> <xsl:call-template name="AddXPathParseItem"> <xsl:with-param name="Node" select="$ParentNode"/> </xsl:call-template> <xsl:call-template name="AddParseItem"> <xsl:with-param name="ParseIt" select="$PRS_NAME"/> <xsl:with-param name="Item">NAME</xsl:with-param> <xsl:with-param name="Value1" select="$ParentNode/sxml:NAME"/> </xsl:call-template> <xsl:call-template name="AddParseItem"> <xsl:with-param name="ParseIt" select="$PRS_ALTERABLE"/> <xsl:with-param name="Item">NOT_ALTERABLE</xsl:with-param> <xsl:with-param name="Value1">TABLE_TYPE</xsl:with-param> </xsl:call-template> </xsl:element> </xsl:if> <xsl:element name="SQL_LIST"> <xsl:element name="SQL_LIST_ITEM"> <xsl:element name="TEXT"> <xsl:text>-- Cannot ALTER type of TABLE </xsl:text> <xsl:call-template name="SchemaName"> <xsl:with-param name="ParentNode" select="$ParentNode"/> </xsl:call-template> </xsl:element> </xsl:element> </xsl:element> </xsl:element> </xsl:if> <xsl:if test="$ParentNode/sxml:OBJECT_TABLE/sxml:OF_TYPE/sxml:SCHEMA[@value1] or $ParentNode/sxml:OBJECT_TABLE/sxml:OF_TYPE/sxml:NAME[@value1]"> <xsl:element name="ALTER_LIST_ITEM"> <xsl:if test="$PRS_NAME=1 or $PRS_CLAUSE_TYPE=1 or $PRS_COLUMN_ATTRIBUTE=1 or $PRS_ALTERABLE=1 or $PRS_XPATH=1"> <xsl:element name="PARSE_LIST"> <xsl:call-template name="AddXPathParseItem"> <xsl:with-param name="Node" select="$ParentNode/sxml:OBJECT_TABLE/sxml:OF_TYPE"/> </xsl:call-template> <xsl:call-template name="AddParseItem"> <xsl:with-param name="ParseIt" select="$PRS_NAME"/> <xsl:with-param name="Item">NAME</xsl:with-param> <xsl:with-param name="Value1" select="$ParentNode/sxml:NAME"/> </xsl:call-template> <xsl:call-template name="AddParseItem"> <xsl:with-param name="ParseIt" select="$PRS_ALTERABLE"/> <xsl:with-param name="Item">NOT_ALTERABLE</xsl:with-param> <xsl:with-param name="Value1">OBJECT_TABLE_TYPE</xsl:with-param> </xsl:call-template> </xsl:element> </xsl:if> <xsl:element name="SQL_LIST"> <xsl:element name="SQL_LIST_ITEM"> <xsl:element name="TEXT"> <xsl:text>-- Cannot ALTER object_type of object TABLE </xsl:text> <xsl:call-template name="SchemaName"> <xsl:with-param name="ParentNode" select="$ParentNode"/> </xsl:call-template> </xsl:element> </xsl:element> </xsl:element> </xsl:element> </xsl:if> <!-- check partition vs non-partitioned --> <xsl:if test="$ParentNode/sxml:RELATIONAL_TABLE/*/sxml:RANGE_PARTITIONING[@src] or $ParentNode/sxml:RELATIONAL_TABLE/sxml:RANGE_PARTITIONING[@src] or $ParentNode/sxml:RELATIONAL_TABLE/sxml:TABLE_PROPERTIES[@src]/sxml:RANGE_PARTITIONING"> <xsl:element name="ALTER_LIST_ITEM"> <xsl:if test="$PRS_NAME=1 or $PRS_CLAUSE_TYPE=1 or $PRS_COLUMN_ATTRIBUTE=1 or $PRS_ALTERABLE=1 or $PRS_XPATH=1"> <xsl:element name="PARSE_LIST"> <xsl:call-template name="AddXPathParseItem"> <xsl:with-param name="Node" select="$ParentNode/sxml:RELATIONAL_TABLE/sxml:TABLE_PROPERTIES"/> </xsl:call-template> <xsl:call-template name="AddParseItem"> <xsl:with-param name="ParseIt" select="$PRS_NAME"/> <xsl:with-param name="Item">NAME</xsl:with-param> <xsl:with-param name="Value1" select="$ParentNode/sxml:NAME"/> </xsl:call-template> <xsl:call-template name="AddParseItem"> <xsl:with-param name="ParseIt" select="$PRS_ALTERABLE"/> <xsl:with-param name="Item">NOT_ALTERABLE</xsl:with-param> <xsl:with-param name="Value1"> <xsl:choose> <xsl:when test="$ParentNode/sxml:RELATIONAL_TABLE/sxml:TABLE_PROPERTIES/sxml:RANGE_PARTITIONING/@src='1' or $ParentNode/sxml:RELATIONAL_TABLE/sxml:TABLE_PROPERTIES[@src='1']/sxml:RANGE_PARTITIONING">REMOVE_PARTITION</xsl:when> <xsl:when test="$ParentNode/sxml:RELATIONAL_TABLE/sxml:TABLE_PROPERTIES/sxml:RANGE_PARTITIONING/@src='2' or $ParentNode/sxml:RELATIONAL_TABLE/sxml:TABLE_PROPERTIES[@src='2']/sxml:RANGE_PARTITIONING">ADD_PARTITION</xsl:when> <xsl:when test="$ParentNode/sxml:RELATIONAL_TABLE/sxml:RANGE_PARTITIONING/@src='1'">REMOVE_PARTITION</xsl:when> <xsl:when test="$ParentNode/sxml:RELATIONAL_TABLE/sxml:RANGE_PARTITIONING/@src='2'">ADD_PARTITION</xsl:when> </xsl:choose> </xsl:with-param> </xsl:call-template> </xsl:element> </xsl:if> <xsl:element name="SQL_LIST"> <xsl:element name="SQL_LIST_ITEM"> <xsl:element name="TEXT"> <xsl:text>-- Cannot ALTER Unpartitioned table to Partitioned </xsl:text> <xsl:call-template name="SchemaName"> <xsl:with-param name="ParentNode" select="$ParentNode"/> </xsl:call-template> </xsl:element> </xsl:element> </xsl:element> </xsl:element> </xsl:if> </xsl:template> <xsl:template name="RenTable"> <xsl:param name="ParentNode" select="''"/> <!-- ******************************************************************* Template: RenTable Parameters: ParentNode - Parent node of SCHEMA, NAME ******************************************************************** --> <xsl:if test="$ParentNode/sxml:NAME[@value1]"> <xsl:element name="ALTER_LIST_ITEM"> <xsl:if test="$PRS_NAME=1 or $PRS_CLAUSE_TYPE=1 or $PRS_COLUMN_ATTRIBUTE=1 or $PRS_ALTERABLE=1 or $PRS_XPATH=1"> <xsl:element name="PARSE_LIST"> <xsl:call-template name="AddXPathParseItem"> <xsl:with-param name="Node" select="$ParentNode"/> </xsl:call-template> <xsl:call-template name="AddParseItem"> <xsl:with-param name="ParseIt" select="$PRS_NAME"/> <xsl:with-param name="Item">NAME</xsl:with-param> <xsl:with-param name="Value1" select="$ParentNode/sxml:NAME/@value1"/> </xsl:call-template> <xsl:call-template name="AddParseItem"> <xsl:with-param name="ParseIt" select="$PRS_CLAUSE_TYPE"/> <xsl:with-param name="Item">CLAUSE_TYPE</xsl:with-param> <xsl:with-param name="Value1">RENAME_TABLE</xsl:with-param> </xsl:call-template> </xsl:element> </xsl:if> <xsl:element name="SQL_LIST"> <xsl:element name="SQL_LIST_ITEM"> <xsl:element name="TEXT"> <xsl:text>ALTER TABLE </xsl:text> <xsl:call-template name="SchemaName"> <xsl:with-param name="ParentNode" select="$ParentNode"/> </xsl:call-template> <xsl:text> RENAME TO </xsl:text> <xsl:call-template name="QuotedName"> <xsl:with-param name="NameNode" select="sxml:NAME"/> </xsl:call-template> </xsl:element> </xsl:element> </xsl:element> </xsl:element> </xsl:if> </xsl:template> </xsl:stylesheet>
Ms-Dos/Windows
Unix
Write backup
jsp File Browser version 1.2 by
www.vonloesch.de