繁体   English   中英

存储过程和SELECT语句返回不同的结果

[英]Stored Procedure and SELECT statement return different results

我在SQL Server 2008数据库上有一个存储过程。 存储过程非常简单,只需一条SELECT语句即可。 当我运行它时,它返回422行。 但是,当我从存储过程中运行SELECT语句时,它返回467行。 我已经通过在同一SSMS窗口中同时运行存储过程和SELECT语句来尝试此操作,并且行为是相同的。 存储过程为:

USE [REMS]
GO
/****** Object:  StoredProcedure [mobile].[GetAllMobileDeviceUsers]    Script Date: 12/04/2014 */
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [mobile].[GetAllMobileDeviceUsers]
AS
SET NOCOUNT ON
SELECT 
ee.EmployeeID, 
EmployeeName = LastName + ', ' + FirstName
FROM EmployeeInvData ee
--UNION
--SELECT
--m.EmployeeID,
--EmployeeName = LastName + ', ' + FirstName
--FROM mobile.MiscPersonnel m
INNER JOIN Employee e
ON ee.EmployeeID = e.EmployeeID
UNION
SELECT
'-1',
'- Select An Employee -'
ORDER BY EmployeeName

当我在同一SSMS窗口中执行此操作时:

exec mobile.GetAllMobileDeviceUsers

SELECT 
ee.EmployeeID, 
EmployeeName = LastName + ', ' + FirstName
FROM EmployeeInvData ee
--UNION
--SELECT
--m.EmployeeID,
--EmployeeName = LastName + ', ' + FirstName
--FROM mobile.MiscPersonnel m
INNER JOIN Employee e
ON ee.EmployeeID = e.EmployeeID
UNION
SELECT
'-1',
'- Select An Employee -'
ORDER BY EmployeeName

我得到两个结果集。 第一是422行。 第二个是467行。 为什么?

这可能是由于未限定对象名称引起的。 如果对象不完全合格,则SQL将假定它们属于默认架构。

像这样

SELECT col1 FROM dbname.schemaname.tablename

不是这个

SELECT col1 FROM tablename

请查看Aaron Bertrand的博客文章,以获取有关此主题的深入说明和示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM