ASP.NETページで使用されるストアドプロシージャを変更しようとしています。T-SQL:ASP.NET GridViewで選択した列による動的クエリ
デフォルトでは、ストアドプロシージャはすべてのデータを返しますが、プラント内の従業員にとっては圧倒的な可能性があります。
私は従業員が彼らの特定の項目のデータを検索できるように列名のメニュー項目と値のテキストボックスダウンドロップを追加します。
私は追加したいことは、次のように検索する列名と列値で渡す機能、次のとおりです。すべての値が(@colValue
と@colName
)に渡された場合
DECLARE @colName nVarChar(50), @colValue nVarChar(50)
SET @colName='EmployeeID'
SET @colValue='007135'
SELECT Column1, Column2, Column3, Column4, Column5, Column6, Column7
FROM viewNum1
WHERE ((@colName IS NULL) OR (@colValue IS NULL) OR ('['[email protected]+']'[email protected]))
、すべてのレコード戻る;しかし、@colName
= EmployeeIDと@colValue
= '007135'(データベースに存在する値)を指定しようとすると、レコードは返されません。
次に、ストアドプロシージャがテーブルの列名にアクセスすることを許可しない古いSQL Server 2000データベースを実行していて、技術全体がSQLインジェクションを受けやすいように見えるという問題があります。
最後に、私のGridView
コントロールをこれにバインドする方法がわかりませんし、まだすべてのレコードを表示する能力があります。
このようなフィルタリングストアドプロシージャを作成するにはどうすればよいですか?
私は2つの矛盾する答えを持っています。ジャスティンのストアドプロシージャは '@colValue IS NULL'を使用しますが、それは動作しないと言っています。私は誰にも反論していない。私は、誰が正しいのかを知るのに十分なほどSQLをよく知りません。あなたはここにもっと多くの担当者を持っているので、私はあなたに尋ねた。 – jp2code
@ jp2code - ポイントは関係ありません - 私はちょうど助けに来ました。このように考えてみましょう。もしあなたがこのようなコードを書いたら 'SELECT ... FROM..WHERE 123 IS NULL'は意味がありますか? nullに値を代入しようとしていますか?あなたは 'VALUE IS NULL'ではなく' Column IS NULL'と言うでしょう。ところで、彼はwhereステートメントでそれを使用しないjustinsストアドプロシージャを見ています。私の助言は、彼がWHEREとAND/ORのようなブール式を使ったようにあなたのsprocを書くことですが、colval IS NULL部分は使わないでください。 – JonH
ところで、彼らは矛盾した答えは間違いありません、私たちは彼があなたにサンプルコードを与えているのと同じ答えを与えています。 – JonH