- - PR -
ストアドプロシージャについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-11-07 15:01
いつもお世話になっております。
C#.net、SQL Server2000で開発しているのですが、 ストアドプロシージャについて質問させてください。 画面に検索条件部と一覧表示部があり、 検索条件で指定した内容を、一覧に表示させるため、ストアドプロシージャを用いて、 表示させたいページのみ値を返そうとしています。 この際、検索条件で指定した内容を、引数としてwhere句およびorderby句を持とうとしているのですが、 (引数@whereの例:"WHERE testa = '0' AND ・・・"。条件の内容を全てWHERE句として引数で渡す) どうにも上手く行きません。 現在は以下のようにしているのですが、@whereのところで構文エラーとなってしまいます。 @whereを省いた場合は、@orderByの部分でエラーとなります。 --------ストアドプロシージャここから-------- CREATE PROCEDURE paging @where varchar(50), @orderBy varchar(20), @current int, @Size int AS CREATE TABLE #tu ( rowID int IDENTITY(1,1), testa varchar(15), testb varchar(40) ) INSERT INTO #tu(testa, testb) SELECT testa,testb FROM tablename @where ORDER BY @orderBy DECLARE @first int,@last int SELECT @first=((@current-1)*@Size)+1 SELECT @last=(@current*@Size) SELECT * FROM #tu WHERE rowID BETWEEN @first AND @last; --------ストアドプロシージャここまで-------- /* 値取得SQL文例(1ページ目を5レコード) */ EXEC paging 1,5; このような場合、上手く検索条件やorderby句を与える方法はないものでしょうか? 条件の各値のみを引数として、 WHERE testc = @where3 AND testd = @where4 のように1つずつ指定するしかないでしょうか? 宜しく御願いします。 |
|
投稿日時: 2005-11-07 15:20
プロシージャ引数のWHERE句でSELECT文が実行できればいんですよね。
うちは以下の方法で実行しています。 変更前 -------------------- SELECT testa,testb FROM tablename @where ORDER BY @orderBy -------------------- この部分を、以下のようにします。 変更後 -------------------- DECLARE @strSQL nvarchar(1000) set @strSQL = 'SELECT testa,testb FROM tablename ' + @where + ' ORDER BY ' + @orderBy EXECUTE SP_EXECUTESQL @strSQL -------------------- [ メッセージ編集済み 編集者: あおい 編集日時 2005-11-07 15:22 ] |
|
投稿日時: 2005-11-07 15:22
水谷です。
SQL を文字列として組み立てて sp_executesql で実行、というのはいかがでしょうか。 |
|
投稿日時: 2005-11-07 16:02
あおい様、水谷様。
ご回答ありがとうございます。 お教えいただいた通りの方法で無事解決致しました。 また何かの折には宜しく御願い致します。 |
1