2012-01-11 18 views
2

ストアドプロシージャおよび関数戻り予期しない結果

ストアドプロシージャは:

@param0 varchar(12), 
@SeqNo INT OUTPUT 
AS 
BEGIN 
IF (@param0 IS NOT NULL) 
BEGIN 
    set nocount on 
    DECLARE @reqseqno INT 
    SELECT @reqseqno = CounterValue FROM Counters WHERE CounterName = @param0 
    UPDATE Counters SET CounterValue = @reqseqno + 1 WHERE CounterName = @param0 
    SELECT @reqseqno AS 'SeqNo' 
END 
END 
GO 

機能dbo.rf_f_CIntToCharは先行ゼロを持つ整数のvarcharバージョンを返す(リターンする文字数は、変換する整数)の2つのパラメータを取ります。

関数:これらは別々に使用すべきである場合のように

(@intVal int, @intLen int) 
RETURNS varchar(10) 
WITH EXEC AS CALLER 
AS 
BEGIN 
IF @intlen > 20 SET @intlen = 20 
IF @intlen < LEN(@intVal) RETURN RIGHT(CONVERT(varchar(10), @intVal), @intlen) 
RETURN REPLICATE('0', @intLen - LEN(@intVal)) + CONVERT(varchar(10), @intVal) 
END 
GO 

ストアドプロシージャおよび関数の両方が動作します。

なぜ上記のクエリはCharNumberではなくSeqNoを返しますか?

+0

に値を代入することはありません、あなたはそのSPと関数のソースの簡易版を追加できますか? –

+0

問題を再現するspと関数のサンプルコードを掲載してください。 –

答えて

4

あなたのストアドプロシージャは、出力パラメータ@SeqNo

+0

ビンゴ。ありがとう..私はそれを逃したか分からない。 – emd