更改名称在变量中的表

时间:2011-08-23 15:01:06

标签: sql sql-server-2005 stored-procedures

我有一种情况需要从存储过程为几个不同的客户端生成一个表。这些表都具有相同的核心值,但有时它们还有其他列。

我宁愿不复制并粘贴那些每次生成SQL的表,所以我当前的设置是我有一个存储过程返回核心列,并将其加载到## TempTableClientName(必要因为它是一个访问这些的外部应用程序和发送到服务器的每个命令似乎被视为一个不同的连接,因此标准的会话临时表似乎不能完成这项工作。)

我现在想运行第二个存储过程来更新临时表以添加到新列中。可能会有几个这样的程序,在某些情况下可能会共享这些程序。为了分享它们,我需要以某种方式告诉它哪个##表要更新。

我目前的选择似乎是:

我可以将它作为字符串传递并使用动态sql,但这看起来很麻烦。

我可以为每个客户端强制执行一个存储过程,然后可以将表名(每个客户端)硬编码到过程中。这似乎有可能存在非最佳代码(即许多非常相似甚至相同的程序)。

有人可以建议比这些更好的选择吗?目前我正在考虑第二,因为没有大量的客户,这似乎是最简单的做事方式。我想要一些更好的选择...我希望可能有一些函数或某些东西需要一个字符串并获得该名称的表对象...

1 个答案:

答案 0 :(得分:0)

我的最终解决方案是重构我的代码,使我的核心程序返回可用于任何客户端的所有列。这意味着它通常会返回不相关的数据(或为空)。此外,如果新客户端需要额外的列,而某些代码在假定给定数量的列时可能需要更新,则此方法会导致潜在问题。

不幸的是,这不是一个好的解决方案,但是由于缺乏其他选择,它不是我的选择。