public function param($value, $type = null, $columnName = 'p')
    {
        $parameterName = $this->findUnusedParameterName($columnName);

        if ($type) {
            $this->appendParameters(
                [
                    $parameterName => [
                        $value,
                        $type
                    ]
                ]
            );
        } else {
            $this->appendParameters([$parameterName => $value]);
        }

        return sprintf(':%s', $parameterName);
    }