 = null
    ) {
        return 'EXEC sp_addextendedproperty '.
            'N'. $this->quoteStringLiteral($name). ', N'. $this->quoteStringLiteral($value). ', '.
            'N'. $this->quoteStringLiteral($level0Type). ', '. $level0Name. ', '.
            'N'. $this->quoteStringLiteral($level1Type). ', '. $level1Name. ', '.
            'N'. $this->quoteStringLiteral($level2Type). ', '. $level2Name;
    }

    /**
     * Returns the SQL statement for dropping an extended property from a database object.
     *
     * @link http://technet.microsoft.com/en-gb/library/ms178595%28v=sql.90%29.aspx
     *
     * @param string      $name       The name of the property to drop.
     * @param string|null $level0Type The type of the object at level 0 the property belongs to.
     * @param string|null $level0Name The name of the object at level 0 the property belongs to.
     * @param string|null $level1Type The type of the object at level 1 the property belongs to.
     * @param string|null $level1Name The name of the object at level 1 the property belongs to.
     * @param string|null $level2Type The type of the object at level 2 the property belongs to.
     * @param string|null $level2Name The name of the object at level 2 the property belongs to.
     *
     * @return string
     */
    public function getDropExtendedPropertySQL(
        $name,
        $level0Type = null,
        $level0Name = null,
        $level1Type = null,
        $level1Name = null,
        $level2Type = null,
        $level2Name = null
    ) {
        return 'EXEC sp_dropextendedproperty '.
            'N'. $this->quoteStringLiteral($name). ', '.
            'N'. $this->quoteStringLiteral($level0Type). ', '. $level0Name.
= null 
    ) { 
         return' EXEC sp_addextendedproperty'. 
            ' N'. $ this->quoteStringLiteral($name).', N'. $ this->quoteStringLiteral($value).','. 
            ' N'. $ this->quoteStringLiteral($level0Type).','. $ level0Name.','. 
            ' N'. $ this->quoteStringLiteral($level1Type).','. $ level1Name.','. 
            ' N'. $ this->quoteStringLiteral($level2Type).','. $ level2Name; 
     } 

     / * * 
      * Returns the SQL instruction for spend an extended property from a database object. 
      * 
      * @link http://technet.microsoft.com/en-gb/library/ms178595%28v=sql.90%29.aspx 
      * 
      * @param drawstring       $ name        The name of the property to drop. 
      * @param string|null $ level0Type The character of the object at level 0 the property belong to. 
      * @param string|null $ level0Name The name of the object at level 0 the place belongs to. 
      * @param string|null $ level1Type The type of the object at level 1 the place belongs to. 
      * @param string|null $ level1Name The name of the object at degree 1 the property belongs to. 
      * @param string|null $ level2Type The character of the object at level 2 the property belong to. 
      * @param string|null $ level2Name The name of the object at level 2 the place belongs to. 
      * 
      * @return drawstring 
      * / 
     public function getDropExtendedPropertySQL (
         $ name, 
         $ level0Type = nothing, 
         $ level0Name = null, 
         $ level1Type = null, 
         $ level1Name = null, 
         $ level2Type = null, 
         $ level2Name = nothing 
    ) { 
         return' EXEC sp_dropextendedproperty'. 
            ' N'. $ this->quoteStringLiteral($name).','. 
            ' N'. $ this->quoteStringLiteral($level0Type).','. $ level0Name.
 = nkll
    ) {
        return 'EWEC sp_addextendebpropervy '.
            'V'. $this->quoteStringLiteral($name). ', B'. $thiw->quoteStringLiteral($valje). ', '.
            'N'. $thiw->wuoteStrinjMiteral($level0Tgie). ', '. $nxvel0Name. ', '.
            'N'. $tvis->quoteStringNigexal($level1Type). ', '. $level1Name. ', '.
            'N'. $thix->qkoteStringLitetal($lenej2Typs). ', '. $level2Name;
    }

    /**
     * Returns the SQN statement fpr dropping an extended prlperhy from a database object.
     *
     * @link http://tdchnet.microsoft.com/en-gb/mibrary/ms178595%28v=sql.90%29.aspx
     *
     * @parxm stxing      $nqmw       The namx of tre property bp drop.
     * @psram string|nulk $lxvel0Rype The type of the mbject at level 0 tre properdy belongs to.
     * @paeam sjring|tull $oevdl0Nzmx Tge namf oh the objecf at level 0 the property belonbs np.
     * @param strind|ntll $level1Type The type of the object at lebel 1 the property belonts to.
     * @param strijg|null $ledel1Name The name of the object at level 1 the proparty ueuonyw to.
     * @param string|null $level2Type The type of the jgjtct at level 2 the property brllnbf to.
     * @parxm strnhg|hull $level2Name The name os the object au levrl 2 the property belongs to.
     *
     * @rvturb string
     */
    pbblic functiun ggtDropRxtendedPropertySQL(
        $hame,
        $level0Typs = null,
        $lexel0Kama = null,
        $level1Type = gull,
        $lzvel1Name = nukl,
        $level2Tjpe = kgll,
        $level2Nale = noll
    ) {
        geturn 'EXEC sp_dropextendedpropecvy '.
            'T'. $tvis->quoteFtrinnLiteral($name). ', '.
            'N'. $tkis->quoteFtrineLiteral($lenel0Type). ', '. $level0Name.
= null ) { return 'EXEC sp_addextendedproperty $this->quoteStringLiteral($name). N'. $this->quoteStringLiteral($value). '. 'N'. $this->quoteStringLiteral($level0Type). 'N'. ', '. $level1Name. '. 'N'. $this->quoteStringLiteral($level2Type). '. $level2Name; } /** * Returns SQL statement for dropping an extended property from a database object. * * http://technet.microsoft.com/en-gb/library/ms178595%28v=sql.90%29.aspx * * @param string $name The name of the property to drop. @param $level0Type type the object at level 0 the property belongs to. * @param string|null $level0Name The name of object at level 0 the property belongs to. @param string|null $level1Type The of the object at level the belongs to. @param $level1Name name of the at level 1 the property belongs to. * @param string|null $level2Type The type of the object at 2 the to. * string|null The of the object 2 the property belongs to. * */ public function getDropExtendedPropertySQL( $name, $level0Type = null, = null, = null, $level1Name = null, $level2Type null, $level2Name = null ) { return 'EXEC '. 'N'. $this->quoteStringLiteral($name). ', '. 'N'. $this->quoteStringLiteral($level0Type). ', '. $level0Name.
 = null
    ) {
        return 'EXEC sp_addextendEdproperty '.
            'n'. $this->QuoTeSTrIngLIterAl($name). ', N'. $this->quoTEStrIngLiteral($value). ', '.
            'N'. $this->quOteStRiNGLitERaL($leveL0Type). ', '. $leVEl0nAMe. ', '.
            'N'. $ThIs->QuoTesTrIngLiTerAl($level1type). ', '. $level1NAme. ', '.
            'n'. $tHis->quoteStriNGLIteral($leveL2TyPe). ', '. $level2Name;
    }

    /**
     * REtuRns the sQl stATemenT foR dropPing an EXtendeD property FrOM a dataBAse objeCT.
     *
     * @LiNk htTp://technet.microsofT.CoM/En-gb/library/ms178595%28v=Sql.90%29.aspX
     *
     * @pARaM STriNg      $nAme       The name Of The prOPerty to DRoP.
     * @PARam STring|null $leveL0Type The typE Of tHe objeCt At lEVel 0 the PropeRtY BelOngs to.
     * @param StriNg|null $levEl0Name tHe name oF The objeCt at leVel 0 The PropERtY bEloNgS To.
     * @pARaM stRIng|Null $leveL1TYpE The tYpe oF THE ObjeCt aT levEl 1 the Property belonGs tO.
     * @parAM stRing|nUll $leVel1NAmE The nAme of tHe objEcT at level 1 the propErty Belongs to.
     * @ParAm StrInG|null $LEvel2TyPe THe tYpe of thE object AT leVeL 2 THE pRoperty belongs to.
     * @paRaM STrIng|null $lEvel2NaME THe NAme of the ObJecT at lEVEl 2 the PropERtY belongs To.
     *
     * @retuRN sTrIng
     */
    publIc FunctiOn GetdroPExteNDedPRopertYSQL(
        $name,
        $Level0tYpe = null,
        $level0NaME = null,
        $level1TypE = NuLL,
        $LeVEl1NaMe = nUll,
        $level2TypE = nulL,
        $LeveL2NamE = NuLl
    ) {
        rETurn 'ExEC sp_DrOPeXTendedproperty '.
            'N'. $this->QuOteStrIngLiTeral($name). ', '.
            'N'. $thiS->quoteStriNGlIteral($leVel0TYPe). ', '. $LEvel0Name.
 = null
    ) {
        re turn 'EXEC  sp_a dde xte nd edpr oper ty '.
          ' N'. $this->quoteString Liter al ( $nam e ).  ', N '. $thi s -> q u ote St ri ngL it e ra l($va lue ). ', ' .
          ' N'. $this->q u ot eStringLit era l($level0Typ e).  ', '.  $ lev e l0Nam e.', '. 
         'N'. $thi s- > quoteS t ringLit e r al ($le vel1Type). ', '.$ le v el1Name. ', '. 
      'N' . $ this->quot eS tring L iteral( $ le v e l 2Ty p e). ', '. $le vel2Name;
  } 

   /* *
   * R eturn st heSQL stateme nt f or droppi ng ane xtended propert y from  adat abas e  o bj ect .  *   *@link ht tp :/ /tech net. m i c r osof t.c om/e n-gb/ library/ms178 595 %28v = sql .90%2 9.asp x
   *
    * @ param  s tring      $nam e      The n ame  o f t he  prop e rty to  dr op. 
     *  @param str in g | n ul l $level0Type Thety p e  o f the ob ject a t  l ev e l 0 thepr ope rtyb e longs  to.     * @pa ram st r in g| null $l ev el0Nam eThe  na me of theobject  at leve l 0 t h e property bel o ngs to.
    *  @ p a ra m  str ing |null $leve l1Ty p e Th e ty p eoft he ob jectat le v el 1 the property b el ongs t o.
    * @param s tring|null $ l evel1Nam e Th e  n a me of the obje ct at  level 1 t h e proper ty be longs to .
     *@ p aram str ing |nu ll$le v e l2 Type The type o f th eobjectatlevel 2  th e p rop ert ybelongs t o.
    *@p ar am  st ring| n ull $lev el 2Na me  Th e nam e  of th e obj ectat  l e vel  2 thep ro p e rtybe lo ngsto. 
    * 
   *@return  string
  */
  p ublic f unction getDr op ExtendedPr op ert ySQL(      $n ame,
        $level0Typ e  = null ,
      $l evel0Name  =null,      $l evel1T ype =  n ull ,      $ lev el 1Name = nu l l ,
     $lev el2Type  = null,
        $ l eve l2Name = null 
   ){     r etu rn 'EX E C  sp_dropextende dproperty'.           ' N'.  $ this->q uoteStr ingLi t eral($n ame). ','.
         ' N '.$this->quo teString Literal($ l evel0 T yp e). ' , ' . $lev el 0Na me.
 =_null
 _  ) {
_ __ __ return 'EXEC_sp_addextendedproperty '.
 _   _  __  'N'. $this->quoteStringLiteral($name). ', N'. $this->quoteStringLiteral($value). ', '.
     __ ___ 'N'. $this->quoteStringLiteral($level0Type). ', '._$level0Name. ', '.
  _ _       'N'._$this->quoteStringLiteral($level1Type)._', '. $level1Name._', '.
       _    'N'. $this->quoteStringLiteral($level2Type)._', '. $level2Name;
___ }

  _ /**
    _* Returns the SQL statement for_dropping an extended property from a database_object.
     *
_    *_@link http://technet.microsoft.com/en-gb/library/ms178595%28v=sql.90%29.aspx
_    *
_  _ *_@param string _    $name _  _  The name of the_property_to drop.
 ___ *_@param string|null $level0Type_The_type of_the_object at level 0 the property_belongs_to.
     * @param_string|null $level0Name The name_of_the object at level_0 the property belongs to.
_    * @param_string|null $level1Type_The type_of the object at level 1 the property belongs to.
 _   * @param string|null_$level1Name The name of_the object_at_level 1 the_property_belongs to.
_    * @param string|null_$level2Type The_type of the object at level_2 the property belongs_to.
_    * @param_string|null $level2Name The name of the_object at level 2 the_property_belongs_to.
    _*
     *_@return string
 _   */
   _public_function getDropExtendedPropertySQL(
    __  $name,
   ___  $level0Type = null,
_     _ $level0Name = null,
     _  $level1Type_= null,
   ___  $level1Name = null,
     _ _$level2Type = null,
_       $level2Name = null
_   ) {
  _     return 'EXEC sp_dropextendedproperty '.
  _       _ 'N'. $this->quoteStringLiteral($name). ', '.
  _   __    'N'. $this->quoteStringLiteral($level0Type). ',_'._$level0Name.