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语句是什么?添加到问题中。谢谢