2012-01-09 4 views
2

私はCAST関数をストアドプロシージャのSET ROWCOUNTのパラメータとして使用できないのだろうかと思います。SET ROWCOUNTでCASTを使用できないのはなぜですか?

このコードは失敗します。

CREATE PROCEDURE GetTransactions 
    @Count VARCHAR(5) 
AS 

    SET ROWCOUNT CAST(@Count AS INT); 
... 

仲介変数作品で、このコード中:

CREATE PROCEDURE GetTransactions 
    @Count VARCHAR(5) 
AS 
    Declare @Rows AS INT; 
    SET @Rows = CAST(@Count AS INT); 

    SET ROWCOUNT @Rows; 
... 

私はINTにパラメータタイプを変更するともこの問題を解決することを知っているが、中間層ストアドプロシージャを呼び出すコンポーネントは、すべてがString型である必要があります。

+0

あなたは単純にできないからです!中間変数を使用する必要があります。なぜそれは大したことですか? –

+0

ハハ!うわー、私は決してそれが明らかだとは思わなかったでしょう!私はコードをできるだけシンプルにしたいだけです。 – Graham

答えて

3

多くの場合、SQL ServerのTSQL実装では、式をSET ROWCOUNTに渡すことはできません。 |

SET ROWCOUNT { number | @number_var } 

数:SET ROWCOUNTへの有効な引数は、数(定数)または単純な変数のどちらかであります@number_var

特定のクエリを停止する前に処理する行の番号(整数)です。

ストアドプロシージャを呼び出す場合も、式をパラメータとして使用できないという点で同じです。

+0

ありがとう、これは私のTSQLの学習に大きく役立ちます。 – Graham

関連する問題