I have been looking at this recently, and as they are similar in nature (and no one can agree) I think using a Procedure with stored @PArams is good if you want to make available to data analysts using a paginated system such as Power BI report builder. when they connect to it, it ingests all the controls and filers into the report definition and sets up the @Params allowing "non SQL" minded analysts to build the reports safely. Using a View - would require them to add the params at report level manually, and/or allow them to accidentally leave them out or add incorrect parameters. (not to be confused with hard coded where clauses).