2012-01-27 12 views
-1

私はいくつかのジョインなどを実行するストアドプロシージャを持っています。returnsetのフィールドの特定の値を返すために、ただし、パラメータの1つは、元の結果セット内の別のフィールドに返される計算値でなければなりません。別のストアドプロシージャから1つのストアドプロシージャを呼び出す - 構文の問題

SELECT @S = (CONVERT (NVARCHAR (50), DateDiff(minute, CONVERT (CHAR (24), [PI9_StartDT], 
108), CONVERT (CHAR (24), [PI9_EndDT], 108))/60)) + ' ' + 'Hrs' + ' ' + 
SUBSTRING(CONVERT (NVARCHAR (50), (DateDiff(minute, CONVERT (CHAR (24), [PI9_StartDT], 
108), CONVERT (CHAR (24), [PI9_EndDT], 108)))), CHARINDEX('.', CONVERT (NVARCHAR (50), 
(DateDiff(minute, CONVERT (CHAR (24), [PI9_StartDT], 108), CONVERT (CHAR (24), 
[PI9_EndDT], 108))/60)), 2), 3) + ' ' + 'mins' 

exec @OUT = [MUJV].[FailPassPI9] GarrisonName, @S, SCPCategory, @S 

上記のように、計算された値をストアドプロシージャのパラメータとして渡す必要があります。

ただし、これは機能しません。私がやろうとしているのは、ストアドプロシージャのパラメータとして@S(その合計が結果セットのフィールドを返すために使われる)です。ご覧のとおり、それはかなり複雑です。

これを達成するにはどうすればよいですか?

+0

あなたは「これは動作しません」と言っています。何のエラーが出ていますか? – Tony

+0

'FailPassPI9'プロシージャに' PI9_StartDT'と 'PI9_EndDT'を渡して、それを文字列にするのはなぜでしょうか? – Tony

+1

最初の「セット」のFROMは表示されません。何をしているのか明確ではありません。 –

答えて

0

変数に間違った結果が出ているようです。

DECLARE @PI9_StartDT datetime = getdate() 
DECLARE @s varchar(max) 
SELECT @S = cast(datepart(hh, @PI9_StartDT) as varchar(2)) + ' Hrs ' + 
      cast(datepart(mi, @PI9_StartDT) as varchar(2)) + ' mins' 

SELECT @s = stuff(convert(varchar(5), getdate(), 108), 3, 1, ' hrs ') + ' mins' 

私は現在の情報に基づいてすることはできません、なぜ、どのようにあなたのスクリプトが失敗している推測しようとしません。ここでは、より良いパフォーマンスと読みやすさのために考慮することができます2例があります。

関連する問題