【发布时间】:2011-08-23 15:01:06
【问题描述】:
我有一种情况,我需要从一个存储过程为几个不同的客户端生成一个表。这些表都有相同的核心价值,但有时它们有额外的列。
我不想每次都复制和粘贴那些生成 SQL 的表,所以我当前的设置是我有一个返回核心列的存储过程,它被加载到 ##TempTableClientName 中(这是必要的,因为它是访问这些的外部应用程序以及发送到服务器的每个命令似乎都被视为不同的连接,因此标准会话临时表似乎无法完成这项工作)。
我现在想运行第二个存储过程来更新该临时表以添加到新列中。可能会有几个这样的程序,并且在某些情况下它们可能会被共享。为此,为了分享它们,我需要以某种方式告诉它要更新哪个##table。
我目前的选择似乎是:
我可以将它作为字符串传递并使用动态 sql,但这看起来很乱。
我可以为每个客户端强制执行一个存储过程,然后可以将表名(每个客户端的)硬编码到该过程中。这似乎有可能用于非最佳代码(即许多非常相似甚至相同的过程)。
谁能提出比这些更好的选择?目前我正在考虑第二个,因为没有大量的客户,这似乎是最简单的做事方式。不过我想要一些更好的选择...我希望可能有一些函数或某些东西会接受一个字符串并获取该名称的表对象...
【问题讨论】:
标签: sql sql-server-2005 stored-procedures