code: def make_param(self, name, value):
          
          if isinstance(value, tds_base.Column):
              value.column_name = name
              return value
          column = tds_base.Column()
          column.column_name = name
          column.flags = 0
          
          if isinstance(value, output):
              column.flags |= tds_base.fByRefValue
              if isinstance(value.type, six.string_types):
                  column.type = tds_types.sql_type_by_declaration(value.type)
              elif value.type:
                  column.type = self.conn.type_inferrer.from_class(value.type)
              value = value.value
  
          if value is default:
              column.flags |= tds_base.fDefaultValue
              value = None
  
          column.value = value
          if column.type is None:
              column.type = self.conn.type_inferrer.from_value(value)
          return column
docs: Generates instance of :class:`Column` from value and name
  
          Value can also be of a special types:
  
          - An instance of :class:`Column`, in which case it is just returned.
          - An instance of :class:`output`, in which case parameter will become
            an output parameter.
          - A singleton :var:`default`, in which case default value will be passed
            into a stored proc.
  
          :param name: Name of the parameter, will populate column_name property of returned column.
          :param value: Value of the parameter, also used to guess the type of parameter.
          :return: An instance of :class:`Column`