code: def ExecuteStoredProcedure(self, sproc_link, params, options=None):
          
          if options is None:
              options = {}
  
          initial_headers = dict(self.default_headers)
          initial_headers.update({
              http_constants.HttpHeaders.Accept: (
                  runtime_constants.MediaTypes.Json)
          })
  
          if params and not type(params) is list:
              params = [params]
  
          path = base.GetPathFromLink(sproc_link)
          sproc_id = base.GetResourceIdOrFullNameFromLink(sproc_link)
          headers = base.GetHeaders(self,
                                    initial_headers,
                                    'post',
                                    path,
                                    sproc_id,
                                    'sprocs',
                                    options)
  
          # ExecuteStoredProcedure will use WriteEndpoint since it uses POST operation
          request = request_object._RequestObject('sprocs', documents._OperationType.ExecuteJavaScript)
          result, self.last_response_headers = self.__Post(path,
                                                           request,
                                                           params,
                                                           headers)
          return result
docs: Executes a store procedure.
  
          :param str sproc_link:
              The link to the stored procedure.
          :param dict params:
              List or None
          :param dict options:
              The request options for the request.
  
          :return:
              The Stored Procedure response.
          :rtype:
              dict