docs: def get_callproc_signature(self, name, param_types):
      """Returns a procedure's signature from the name and list of types.
  
      :name: the name of the procedure
      :params: can be either strings, or 2-tuples. 2-tuples must be of the form (name, db_type).
      :return: the procedure's signature
      """
      if isinstance(param_types[0], (list, tuple)):
        params = [self.sql_writer.to_placeholder(*pt) for pt in param_types]
      else:
        params = [self.sql_writer.to_placeholder(None, pt) for pt in param_types]
  
      return name + self.sql_writer.to_tuple(params)