Sql 根据参数执行正确的存储过程的解决方案是什么

Sql 根据参数执行正确的存储过程的解决方案是什么,sql,sql-server,tsql,Sql,Sql Server,Tsql,我发现有两个Q/A根据我的说法是相同的,但给出的答案是不同的,所以我想让你对正确的答案发表意见,或者也许这实际上不是同一个问题 以下是问题: 您的应用程序包含每个国家/地区的存储过程。每个 存储过程通过 @EmpID参数。您需要为每个员工构建一个流程 它将根据 居住国。你应该使用哪种方法 包含大小写的SELECT语句 光标 批量插入 看法 用户定义的函数 正确答案:5用户定义的函数 第二点: 您的应用程序包含每个国家/地区的存储过程。每个 存储过程通过 @EmpID参数。您计划为每个员工构建一个

我发现有两个Q/A根据我的说法是相同的,但给出的答案是不同的,所以我想让你对正确的答案发表意见,或者也许这实际上不是同一个问题

以下是问题:

您的应用程序包含每个国家/地区的存储过程。每个 存储过程通过 @EmpID参数。您需要为每个员工构建一个流程 它将根据 居住国。你应该使用哪种方法

包含大小写的SELECT语句 光标 批量插入 看法 用户定义的函数 正确答案:5用户定义的函数

第二点:

您的应用程序包含每个国家/地区的存储过程。每个 存储过程通过 @EmpID参数。您计划为每个员工构建一个流程 它将基于 居住国。你应该使用哪种方法

递归存储过程 触发 包含大小写的UPDATE语句 光标 foreach SQLCLR语句 正确答案:4光标


在我看来,游标解决方案是正确的…

第一个有点奇怪。创建函数的方法明确表示:

用户定义的函数不能调用存储过程,但可以调用扩展存储过程。 不清楚作者的意图是什么,但我对答案5的问题规则的解读


我可能不喜欢将游标用于工作,但在指定的选项中,它似乎是唯一适用的解决方案。

关于第一个问题,您不能从select、insert、视图或函数调用存储过程,因此只能留下游标。但这是一个糟糕的答案。游标不是单个进程。它是一个指针,一个可以在单个进程中使用的工具。因此,如果您使用游标在一系列员工记录中循环,则可能位于存储过程中。 对我来说,这就是答案,一个存储过程,它包含在你的第二个问题中。第二个问题是递归存储过程。递归部分困扰着我,因为调用另一个存储过程不需要递归存储过程。因此,问题2的选项1有点体面,但也有问题。 我排除了第二个问题的选项3、4和5,原因与我排除了问题1中的所有选项相同。这就留下了导火索。完全有可能在触发器上调用此country存储过程,该触发器在插入或更新新员工时运行。根据应用程序的不同,这可能是一个很好的解决方案。因此,问题2只剩下一个半好的答案2和1。
总而言之,问题1没有真正好的答案,问题2有两个答案至少是半可接受的。如果是我提出的问题,我会使用问题1中的选项,但将选项2光标替换为存储过程。

也感谢您的有用反馈