【发布时间】:2021-08-28 18:17:01
【问题描述】:
似乎是一个简单的答案,但与我发现的情况相去甚远,使用存储过程可能不可行。
只是想问一下,因为可能有一个优雅的解决方案.... (顺便说一句:我在 SQL Server 2014 上运行我的数据库)
我有一个非常简单的选择
select companyID, companyName
from tblCompanies
但在某些情况下,我需要获取更大的数据集
select companyID, companyName, companyAddress, companyCountry
from tblCompanies
当然这可以通过创建多个存储过程来完成
- getCompaniesLite
- getCompaniesBasic
- getCompaniesFull 等
也可以传递一个参数并使用 IF-ELSE 在完全不同的 SELECTS 中进行选择。
不过,这两种方法看起来都很麻烦,存在大量重复和可维护性问题..
也许有一种方法可以根据输入值获取特定列,例如像这样:
select
companyID, companyName,
case when @FULL = 1 then companyAddress end
from tblCompanies
【问题讨论】:
-
如果您所做的只是返回表列的子集,您的存储过程的粒度可能是错误的。
标签: sql sql-server stored-procedures optimization