3

intデータ型MyStoredProcを受け取ったストアドプロシージャ呼び出しがあるとしましょう。(@MyParam INT)

このようなスクリプトでintが宣言されているとしましょう...

DECLARE @MyVar INT ;
SET @MyVar = 101 ;

私はこれをたくさん行う長いSQLスクリプトを書いたばかりです...

EXEC MyStoredProc @MyVar + 1  ;

これが構文エラーの警告を引き起こしていることにショックを受けました。

私がすることができます...

EXEC MyStoredProc @MyVar ;

そして私はこれを行うことができます...

EXEC MyStoredProc 101 ;

しかし、私はこれを行うことはできません...

EXEC MyStoredProc @MyVar + 1  ;

これにより、何かが足りない場合を除いて、スクリプトを作成するのが非常に難しくなります。これはSQL2005用です。

4

2 に答える 2

2

私が見る唯一のオプションは、一時変数を宣言することです:

declare @var1_increment = @var1 + 1
exec stored_proc @var1_increment

また、T-SQL 構文の拡張を提案する Connect トピックと User Voice トピックを作成します。

于 2012-10-13T18:24:38.737 に答える
2

@MyVar + @MyVar2 を追加すると、整数がオーバーフローする可能性があります。これが 1 つの理由である可能性があります。

ちなみに、以下はSQL Server 2008では機能しません

EXEC MyStoredProc @MyVar + @MyVar2;

ストアド プロシージャを呼び出す前に (@adatishchev に従って) 追加を行うか、2 つのパラメータをストアド プロシージャに渡してストアド プロシージャ内に追加できると思います。

EXEC MyStoredProc @MyVar, @MyVar2;

CREATE PROCEDURE [dbo].[MyStoredProc]

     @MyVar INT,
     @MyVar2 INT
AS
BEGIN
     SELECT @MyVar += @MyVar2;

END
于 2012-10-13T18:49:56.497 に答える