【问题标题】:Stored procedure user interaction存储过程用户交互
【发布时间】:2011-06-22 00:04:16
【问题描述】:

我有一个很大的存储过程。 它有多个插入到不同的表中。 我想要做的是暂停存储过程并要求用户确认一些东西(比如你喜欢插入的记录),如果他们点击是,我继续存储过程并进入第二个表。它是 Sql Server 2008 和 asp.net 前端。 谢谢!

更新:我需要大约 100 次暂停。除了创造 100 sp 没有别的办法吗?

【问题讨论】:

  • 如果您有 100 个点需要停下来并要求用户确认某事,那么您需要做的第一件事就是重新设计您的流程。没有人愿意坐在那里点击 100 次。
  • 当然,没有用户席位 100 暂停确认。您能否详细说明您的设计过程以及您将如何处理用户交互?您正在尝试的实际过程是什么?提供更多细节以获得最佳解决方案

标签: asp.net sql sql-server-2008


【解决方案1】:

用户交互不属于存储过程 (SP)。它属于用户界面。您需要单独处理所有这些 - 如果需要,编写多个存储过程。然后,您的 UI 可以请求输入、运行过程、获取结果(如果需要)、请求更多输入(如果需要,基于以前的结果)、运行另一个 SP 等,将用户输入作为参数传递给 SP SP 需要它。

编辑:想想你想要做什么。数据库服务器旨在提供数据,而不是用户界面。如果您有多个步骤过程需要用户输入这些步骤,则需要在用户界面中进行处理。服务器可以通过从用户界面传递的参数接受输入,并且可以提供结果——就是这样。该过程的每个步骤都应该是独立的,并且 UI 应该控制通过这些步骤的流程。数据库对用户界面一无所知;用户界面正是它所称的 - 与用户交互的方式。

【讨论】:

    【解决方案2】:

    那么你需要两个存储过程。
    1. 调用 SP1
    2. 应用与用户互动
    3.调用SP2

    【讨论】:

    • 将您的 SQL Server 视为一个对象,并将 SP 视为该对象上的方法。如果你想让半个方法执行,然后控制权返回给调用者,然后在一些用户交互后完成该方法的后半部分,你会怎么做?恐怕您需要重构您的代码,以便每个 SP(方法)都完整执行,然后返回到 ASP.Net 代码。因此,您给出的示例需要多个 SP。
    • 我建议您编辑您的帖子以在您的评论中提供信息,然后删除评论。该评论提供了一些很好的信息,并将大大改善您的答案。 :)
    猜你喜欢
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多