MINI MINI MANI MO
<?xml version="1.0"?>
<!--
Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
NAME
kususerd.xsl
DESCRIPTION
Convert USER document (SXML) to creation DDL.
MODIFIED MM/DD/YY
sdavidso 03/13/17 - bug25440009 handle user name with apostrophe
jjanosik 10/21/16 - Project 34974: support no authentication for user
create
jjanosik 09/12/16 - Bug 24387072: Fix how collation clause is output
tbhukya 08/04/16 - Bug 24313182: Add double quotes to collation name
tbhukya 03/09/16 - Bug 22899711: Remove DoParse template call
jjanosik 09/28/15 - bug 21798129: Add support for LOCAL TEMPORARY
TABLESPACE.
tbhukya 02/25/15 - Proj 47173: Data bound collation
lbarton 06/25/14 - lrg 12377624: use SingleQuotedNameSxD
lbarton 02/06/14 - bug 17943479: make template name unique
dvekaria 01/21/14 - Bug18095007: Output external user DDL.
rapayne 03/04/12 - bug 16418139: process PASSWORD quotes correctly.
sdavidso 11/02/05 - fix inconsistent stylesheet format
lbarton 08/10/05 - lbarton_mddiff
lbarton 07/11/05 -
htseng 03/16/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="kuscommd.xsl"/>
<xsl:import href="kusindxd.xsl"/>
<!-- Top-level parameters -->
<!-- Parameters for DDL generation -->
<xsl:param name="PRETTY">1</xsl:param>
<xsl:param name="SQLTERMINATOR">0</xsl:param>
<!-- *******************************************************************
Template: USER - top-level template for tables.
This template puts out
- CREATE USER name
then calls one of
- CreObjTable - for object tables and XMLType tables
- CreRelTable - for relational tables
******************************************************************** -->
<xsl:template match="sxml:USER">
<xsl:choose>
<xsl:when test="sxml:NAME='SYS' or sxml:NAME='SYSTEM'">
<xsl:text> ALTER USER </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> CREATE USER </xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text>"</xsl:text>
<xsl:value-of select="sxml:NAME"/>
<xsl:text>" </xsl:text>
<xsl:choose>
<xsl:when test="sxml:TYPE='NO_AUTHENTICATION'">
<xsl:text> NO AUTHENTICATION </xsl:text>
</xsl:when>
<xsl:when test="sxml:TYPE='GLOBAL'">
<xsl:text> IDENTIFIED GLOBALLY AS '</xsl:text>
<xsl:call-template name="EscapeStringSxD">
<xsl:with-param name="TheString" select="sxml:EXTERNAL_NAME"/>
</xsl:call-template>
<xsl:text>'</xsl:text>
</xsl:when>
<xsl:when test="sxml:TYPE='EXTERNAL'">
<xsl:text> IDENTIFIED EXTERNALLY </xsl:text>
<xsl:if test="sxml:EXTERNAL_NAME">
<xsl:text>AS </xsl:text>
<xsl:call-template name="SingleQuotedNameSxD">
<xsl:with-param name="NameNode" select="sxml:EXTERNAL_NAME"/>
</xsl:call-template>
</xsl:if>
</xsl:when>
<xsl:when test="sxml:TYPE='LOCAL' and sxml:VALUE">
<xsl:text> IDENTIFIED BY VALUES '</xsl:text>
<xsl:call-template name="EscapeStringSxD">
<xsl:with-param name="TheString" select="sxml:VALUE"/>
</xsl:call-template>
<xsl:text>'</xsl:text>
</xsl:when>
<xsl:when test="sxml:TYPE='LOCAL' and sxml:PASSWORD">
<xsl:text>IDENTIFIED BY </xsl:text>
<xsl:call-template name="EscapeStringSxD">
<xsl:with-param name="TheString" select="sxml:PASSWORD"/>
</xsl:call-template>
<xsl:value-of select="sxml:PASSWORD"/>
</xsl:when>
</xsl:choose>
<!-- Generate default collation -->
<xsl:if test="$VERSION>=1202000000 and sxml:DEFAULT_COLLATION">
<xsl:call-template name="DoCollation">
<xsl:with-param name="IsDefault">1</xsl:with-param>
<xsl:with-param name="Name" select="sxml:DEFAULT_COLLATION"/>
<xsl:with-param name="CheckPretty">1</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:if test="sxml:DEFAULT_TABLESPACE">
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> DEFAULT TABLESPACE "</xsl:text>
<xsl:value-of select="sxml:DEFAULT_TABLESPACE"/>
<xsl:text>"</xsl:text>
</xsl:if>
<xsl:if test="sxml:TEMPORARY_TABLESPACE">
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> TEMPORARY TABLESPACE "</xsl:text>
<xsl:value-of select="sxml:TEMPORARY_TABLESPACE"/>
<xsl:text>"</xsl:text>
</xsl:if>
<xsl:if test="sxml:PROFILE">
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> PROFILE "</xsl:text>
<xsl:value-of select="sxml:PROFILE"/>
<xsl:text>"</xsl:text>
</xsl:if>
<xsl:if test="sxml:PASSWORD_EXPIRE">
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> PASSWORD EXPIRE </xsl:text>
</xsl:if>
<xsl:if test="sxml:ACCOUNT_LOCK='Y'">
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
</xsl:if>
<xsl:text> ACCOUNT LOCK</xsl:text>
</xsl:if>
<xsl:if test="$SQLTERMINATOR=1">
<xsl:text>;</xsl:text>
<!-- Terminate the SQL statement -->
</xsl:if>
<xsl:if test="sxml:LOCAL_TEMPORARY_TABLESPACE">
<xsl:if test="$PRETTY=1">
<xsl:text>
</xsl:text>
</xsl:if>
<!-- ALTER USER -->
<xsl:text> ALTER USER </xsl:text>
<xsl:text>"</xsl:text>
<xsl:value-of select="sxml:NAME"/>
<xsl:text>" </xsl:text>
<!-- LOCAL TEMPORARY TABLESPACE -->
<xsl:if test="sxml:LOCAL_TEMPORARY_TABLESPACE">
<xsl:if test="$PRETTY=1">
<xsl:text>
 </xsl:text>
<xsl:text> </xsl:text>
</xsl:if>
<xsl:text> LOCAL TEMPORARY TABLESPACE </xsl:text>
<xsl:text>"</xsl:text>
<xsl:value-of select="sxml:LOCAL_TEMPORARY_TABLESPACE"/>
<xsl:text>" </xsl:text>
</xsl:if>
<xsl:if test="$SQLTERMINATOR=1">
<xsl:text>;</xsl:text>
<!-- Terminate the SQL statement -->
</xsl:if>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
OHA YOOOO