【问题标题】:Manually add records to the result of a SQL select query via stored procedure call using SQL Server [duplicate]使用 SQL Server 通过存储过程调用手动将记录添加到 SQL 选择查询的结果 [重复]
【发布时间】:2020-01-19 19:36:48
【问题描述】:
CREATE PROCEDURE [dbo].[GetAllLocations] 

AS
BEGIN
    SET NOCOUNT ON;

    SELECT DISTINCT [Location] from Emp WHERE [Location] IS NOT NULL;
END

我需要一个从一个选择查询中提取结果的存储过程,然后我需要向该查询添加 2 个附加结果。我不想将这两个额外的结果插入我只想“硬编码”的表中。

所以基本上如果上面的查询有这个结果:

New York
Kansas 
California
New Mexico 

我想手动将缅因州和佛罗里达州添加到该列表中,但我不想将这些记录添加到该查询中的“Emp”表中。我假设某种临时表可能会完成这项工作,但我在网上找不到任何解决方案,而且我不熟悉临时表。

【问题讨论】:

  • 缅因州和佛罗里达州将从哪里来?你只是在找UNION吗?
  • 可能是工会,佛罗里达州和缅因州根本不在数据库中,我不想添加它们。
  • 我可以创建一个临时表并将它们联合起来吗?如果有人可以使用我的示例提供代码,我将立即接受他们的回答。
  • 从 [your_table] 中选择 C1 Union Select 'Florida' Union Select 'Maine' ;这段代码将为您完成。

标签: sql sql-server tsql stored-procedures temp-tables


【解决方案1】:

您可以使用union,如:

SELECT [Location] 
FROM Emp
WHERE [Location] IS NOT NULL
UNION  -- on purpose to remove duplicates
SELECT Location
FROM (VALUES ('Maine'), ('Florida')) v(Location);

也就是说,我认为没有充分的理由将此作为存储过程。您应该将其设为视图或用户定义的表函数。也就是说,代码可以在 SELECT 查询中使用。

【讨论】:

    猜你喜欢
    • 2018-02-16
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多