【问题标题】:How to validate SQL code / stored procedure correctness如何验证 SQL 代码/存储过程的正确性
【发布时间】:2021-11-11 22:55:12
【问题描述】:

我是一名实习 SQL 开发人员,我的老板问我这个问题:

我的客户给了我一个 数据集 2019正确的输出。我们编写了一个存储过程,接收数据集并返回类似于客户端输出的输出。所以现在我们的存储过程在 2019 年数据集上正常工作

现在我如何验证存储过程是否适用于其他年份的数据集

任何帮助将不胜感激!

【问题讨论】:

  • 只要您没有硬编码任何日期,应该没问题,不是吗?但为了安全起见,您可能希望在另一年执行相同的方法,即验证它是否返回正确的结果。您可以创建 SQL 单元测试,但最终您需要创建这样的测试,因此您需要示例数据和预期结果 - 这是您验证任何 SQL 查询的方式。
  • 我同意@DaleK。我能想到的唯一要补充的是,您可以询问是否存在适用于 2019 年数据集中可能未显示的其他年份的任何细微差别——例如,获取仅在 2020 年添加的产品线的其他特殊信息.
  • 在我看来,您正在考虑将数据集 A 转换为输出数据 B,并猜测从 A -> B 的转换需要是什么。但是,如果您可以确定存储过程实际上应该做什么,即“按产品线分组并计算销售额与销售成本与同比利润”,那么验证它是否在做就容易得多它!
  • 您可以(并且应该)为多个不同时期制造数据,确切地知道该信息应该产生什么作为程序逻辑的输出。一种简单的方法是从 2019 年的数据中复制行,同时将“日期”更改为其他年份(同时跟踪您添加的日期,以便您可以手动确定正确的输出应该是什么)。
  • 还有一件事 - 您并不真正知道您的逻辑在 2019 年是否正常工作,因为您的数据库不包含任何其他年份的数据(大概)。在您的测试数据跨越多年之前,您无法知道这一点。请注意,一年零一个月并不构成“多年”。不要试图采取廉价、简单的方式进行测试。

标签: sql sql-server tsql stored-procedures


【解决方案1】:

要验证过程并确保它们正确无误,请将整个数据库导入 Visual Studio 中的数据库解决方案并运行构建以验证所有对象。

【讨论】:

  • 你的意思是语法正确并且编译成功吗?这不是我要找的。我正在寻找它是否在输入的任何数据集上产生正确的结果。谢谢您的帮助
猜你喜欢
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 2021-11-01
相关资源
最近更新 更多