gpt4 book ai didi

sql - 存储过程,传递表名作为参数

转载 作者:行者123 更新时间:2023-12-02 08:58:07 26 4
gpt4 key购买 nike

我有大约六个通用但相当复杂的存储过程和函数,我想以更通用的方式使用它们。

理想情况下,我希望能够将表名称作为参数传递给过程,因为目前它是硬编码的。

我所做的研究表明我需要将程序中的所有现有 SQL 转换为使用动态 SQL,以便从参数中拼接动态表名称,但是我想知道是否有更简单的方法通过引用表以另一种方式?

例如:

SELECT * FROM @MyTable WHERE...

如果是这样,如何从表名称设置@MyTable变量?

我使用的是 SQL Server 2005。

最佳答案

动态 SQL 是执行此操作的唯一方法,但如果需要,我会重新考虑应用程序的体系结构。 SQL 不太擅长“通用”代码。当它被设计和编码来执行单独的任务时,它的效果最好。

从表 A 中选择与从表 B 中选择不同,即使 select 语句看起来相同。可能有不同的索引、不同的表大小、数据分布等。

您可以生成自己的存储过程,这是一种常见的方法。有一个代码生成器,可以为您需要的表创建各种选择存储过程。每个表都有自己的 SP,然后您可以将其链接到您的应用程序中。

我已经用 T-SQL 编写了这些类型的生成器,但您可以使用大多数编程语言轻松完成。这是非常基本的东西。

自从 Scott E 提出 ORM 以来,我想再补充一件事...您还应该能够将这些存储过程与最复杂的 ORM 一起使用。

关于sql - 存储过程,传递表名作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3346842/

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