Sql server 存储过程记录集与SQL不匹配
我有一个非常简单的存储过程,本质上是一个基于单个表的视图的Sql server 存储过程记录集与SQL不匹配,sql-server,stored-procedures,Sql Server,Stored Procedures,我有一个非常简单的存储过程,本质上是一个基于单个表的视图的SELECT语句 当我单独运行SELECT语句时,我会得到一组结果,而当我运行存储过程时,我会得到一个不同的结果(实际上是第一个结果的子集) 这是使用SQLServer2008ManagementStudio 有人知道这是怎么发生的吗 我尝试过重新编译存储过程,也尝试过删除和重新创建它,但值没有改变 基础表实际上是同一服务器上不同数据库中的表的同义词 CREATE PROCEDURE [dbo].[usp_RPT_SelectCostCe
SELECT
语句
当我单独运行SELECT
语句时,我会得到一组结果,而当我运行存储过程时,我会得到一个不同的结果(实际上是第一个结果的子集)
这是使用SQLServer2008ManagementStudio
有人知道这是怎么发生的吗
我尝试过重新编译存储过程,也尝试过删除和重新创建它,但值没有改变
基础表实际上是同一服务器上不同数据库中的表的同义词
CREATE PROCEDURE [dbo].[usp_RPT_SelectCostCentre2]
(@DataAreaId nvarchar(3))
AS
BEGIN
SELECT
'All' AS 'NUM',
' All Cost Centres' AS 'Description'
UNION
SELECT DISTINCT
d.NUM,
CASE
WHEN d.DESCRIPTION='' THEN d.NUM
ELSE d.DESCRIPTION
END AS 'Description'
FROM
v_BAS2_Dimensions AS d
WHERE
d.DataAreaId = @DataAreaId
AND d.DIMENSIONCODE=1
ORDER BY
NUM
END
运行单个SQL语句进行测试:
@DataAreaId nvarchar(4)
--
SET @DataAreaID='bkt2'
SELECT 'All' AS 'NUM'
,' All Cost Centres' AS 'Description'
UNION
SELECT DISTINCT d.NUM
,CASE
WHEN d.DESCRIPTION='' THEN d.NUM
ELSE d.DESCRIPTION
END AS 'Description'
FROM v_BAS2_Dimensions AS d
WHERE d.DataAreaId=@DataAreaId
AND d.DIMENSIONCODE=1
ORDER BY NUM
你跑
DECLARE @DataAreaId nvarchar(4)
在SP中:
@DataAreaId nvarchar(3)
只需在SP
nvarchar(4)
中进行修复,甚至使用nvarchar(max)
就可以了。如果没有任何SQL代码,我们应该如何回答这个问题?欢迎使用堆栈溢出!请阅读。单独运行时如何声明@DataAreaId
?或者最好放上代码,它会显示您期望的结果。您单独运行的SELECT语句是什么?添加到问题中。谢谢