gpt4 book ai didi

sql - 有没有更好的方法来调试 SQL?

转载 作者:行者123 更新时间:2023-12-04 06:13:24 25 4
gpt4 key购买 nike

我已经使用 SQL 多年了,主要是 MySQL/PhpMyAdmin,但最近也使用了 Oracle/iSqlPlus 和 PL/SQL。我用 PHP、Java、ActionScript 等编写过程序。我意识到 SQL 不像其他语言那样是一种命令式编程语言 - 但是为什么 SQL 中的错误消息似乎不那么具体?在其他环境中,我直接指出了问题的根源。通常情况下,MySQL 会给我错误,例如“错误 AROUND where u.id = ...”并打印整个查询。这对于存储过程来说更加困难,因为在其中调试可能是一场彻头彻尾的噩梦。

我是否缺少一个可以提供更好的错误报告的神奇工具/语言/插件/设置,还是我们坚持这个?我想要一个调试器或语言,它可以在设置断点和单步执行代码时为我提供与 Eclipse 相同的控制量。这可能吗?

最佳答案

我认为答案在于 SQL 是一种基于集合的语言,附加了一些过程性的东西。由于设计人员以基于集合的方式进行思考,因此他们认为其他语言具有的普通调试类型并不重要。但是,我认为其中一些正在发生变化。你可以在 SQL Server 2008 中设置断点。我还没有真正使用过它,因为你必须有 SQL Server 2008 数据库才能工作,而且我们大多数仍然是 SQL Server 2000。但它是可用的,它允许你逐步完成事物。当您的 select 语句有 150 行长时,您仍然会遇到问题,并且它知道语法不正确,但它不能准确指出在哪里,因为它是一个命令。

就我个人而言,当我编写一个长程序 SP 时,我建立了一个测试模式,包括向我展示我所做的事情的结果、我感兴趣的特定点的关键变量的值,以及让我知道哪些步骤的打印语句已经完成,然后在完成后将整个事情回滚。这样我就可以看到如果它真的运行会发生什么,但如果我弄错了,不会损害数据库中的任何数据。我觉得这非常有用。不过,它可以大大增加您的 proc 的大小。我有一个我使用的模板,其中包含我需要在其中设置的大部分结构,因此我不需要花太多时间来完成。特别是因为我从不添加插入。更新或删除到 proc 而不先测试关联的选择以确保我有我想要的记录。

关于sql - 有没有更好的方法来调试 SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/821201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com