【问题标题】:sql server select from case db [duplicate]sql server 从案例数据库中选择 [重复]
【发布时间】:2012-03-19 03:53:41
【问题描述】:

我在一台服务器上有 2 个数据库。 我需要编写基于@db 变量进行选择的程序。

我知道这有两种可能性:

  1. 我声明 @SQL nvarchar(max) 并以纯文本格式生成我的查询。然后我做exec @SQL。 糟糕的变种恕我直言。

  2. 我做了 2 个类似的查询并使用 if @db='' 1st query else 2nd query。另一个糟糕的变体,因为它是重复代码。

问题是 - 有没有办法这样做或类似:select * from @db.dbo.table?

【问题讨论】:

  • 您可能想查看同义词,但我不知道您是否可以创建一个中间批次。 msdn.microsoft.com/en-us/library/ms177544.aspx
  • 表名,包括数据库,不能在不使用动态SQL的情况下用变量指定。唯一的另一种选择是提示用户输入值,并根据用户输入生成带有硬编码值的脚本。

标签: sql sql-server tsql


【解决方案1】:

使用“exec @SQL”并不邪恶。如果它完成了工作并且您没有将自己暴露在任何安全风险中,那么它可能是最好的方法。另一种选择是考虑使用真正的编程语言,如 c#(或任何你喜欢的语言),因为它们能够更好地处理这些动态需求。

【讨论】:

  • 我知道它并不邪恶,但很难测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 2017-12-20
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 2020-10-20
  • 1970-01-01
相关资源
最近更新 更多