1
非常に単純なストアドプロシージャがあります。本質的には、単一のテーブルに基づくビューに基づくSELECT
ステートメントです。ストアドプロシージャSQLに一致しないレコードセット
SELECT
ステートメントを別々に実行すると、結果が1セット得られます。ストアドプロシージャを実行すると、別のステートメント(実際には最初のサブセット)が表示されます。
これはSQL Server 2008 Management Studioを使用しています。
これはどうやって起こるのでしょうか?
私はストアドプロシージャを再コンパイルしようとしましたが、削除して再作成しても値は変わりません。
実際には、基礎となるテーブルは、同じデータベース上の異なるデータベース内のテーブルに対してSYNONYM
です。
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 [email protected]
AND d.DIMENSIONCODE=1
ORDER BY NUM
そして、私たちは* SQLコードなしでこれにどのように答えなければなりませんか? –
ようこそスタックオーバーフロー! [良いSQL質問をするためのヒント](http://meta.stackoverflow.com/a/271056/2835541)をお読みください。 –
申し訳ありません、コードの下に –