code: public function execute()
      {
          $sql = $this->getSql();
          list($profile, $rawSql) = $this->logQuery(__METHOD__);
  
          if ($sql == '') {
              return 0;
          }
  
          $this->prepare(false);
  
          try {
              $profile and Yii::beginProfile($rawSql, __METHOD__);
  
              $this->internalExecute($rawSql);
              $n = $this->pdoStatement->rowCount();
  
              $profile and Yii::endProfile($rawSql, __METHOD__);
  
              $this->refreshTableSchema();
  
              return $n;
          } catch (Exception $e) {
              $profile and Yii::endProfile($rawSql, __METHOD__);
              throw $e;
          }
      }
docs: Executes the SQL statement.
  This method should only be used for executing non-query SQL statement, such as `INSERT`, `DELETE`, `UPDATE` SQLs.
  No result set will be returned.
  @return int number of rows affected by the execution.
  @throws Exception execution failed