Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 范围的存储过程参数_Sql Server_Stored Procedures_Ssrs 2012 - Fatal编程技术网

Sql server 范围的存储过程参数

Sql server 范围的存储过程参数,sql-server,stored-procedures,ssrs-2012,Sql Server,Stored Procedures,Ssrs 2012,这个问题专门针对服务于SSRS报告的存储过程,但我想它可以应用于任何存储过程 通常,我们向存储过程发送一个范围以获取该范围的数据。例如,获取名称以“A”到“K”开头的客户的所有客户数据。在客户端,我有一个所有客户名称的下拉列表(带有typeahead),用户可以选择开始和结束。在下拉列表中,我只显示客户的姓名,但我还有客户的Id。现在值得一提的是,这只是一个例子,我并不总是在“A”和“K”之间寻找客户。有时,范围是完全不同的。为简洁起见,我们将坚持使用客户名称 假设用户选择了以下选项: 起点:

这个问题专门针对服务于SSRS报告的存储过程,但我想它可以应用于任何存储过程

通常,我们向存储过程发送一个范围以获取该范围的数据。例如,获取名称以“A”到“K”开头的客户的所有客户数据。在客户端,我有一个所有客户名称的下拉列表(带有typeahead),用户可以选择开始和结束。在下拉列表中,我只显示客户的姓名,但我还有客户的Id。现在值得一提的是,这只是一个例子,我并不总是在“A”和“K”之间寻找客户。有时,范围是完全不同的。为简洁起见,我们将坚持使用客户名称

假设用户选择了以下选项:

  • 起点:伊莱恩·贝尼斯(客户ID:199)
  • 完:杰瑞·宋飞(客户编号:3)
现在我有两个选项可以将这些参数传递给存储过程

  • 把名字传给“伊莲·贝尼斯”和“杰瑞·宋飞”
  • 通过ID 199和ID 3。在存储过程端,找到199和3的名称并使用它们
  • 如果我使用选项1,如果客户机没有使用带有customer表中名称的下拉列表,那么他们可以传递任何字符串。选项2强制他们发送客户的ID。但是选项2需要在存储过程端查找ID以找到名称,因此需要做一些额外的工作


    我的问题是我应该选择哪些选项?每种方法的优点/缺点是什么?

    似乎你已经知道了很多优点/缺点。如果要使用已验证的输入,则从实际数据生成列表,然后应将唯一ID发送到存储过程。这包括你已经提到的管理费用。如果不需要验证输入,那么不要浪费时间查找有效数据或向存储过程发送ID。谢谢您的评论。我只是想发布这个问题,以防其他经验丰富的人有其他建议或赞成/反对意见。如果我错过了一些重要的事情,我不想以某种方式继续做下去。