- PR -

ADO.net 2.0 省略可能なパラメータ

1
投稿者投稿内容
otf
ベテラン
会議室デビュー日: 2006/08/04
投稿数: 91
投稿日時: 2007-03-05 14:03
VisualStudio2005のADO.net 2.0で開発を行っています。
DBはOracle 9iを使用しています。
SELECT命令で省略可能のパラメータを使用したいのですが、
そのようなことは可能なのでしょうか?

たとえば
・w_job 必須
・w_deptno 省略可能
として

-----------------------------------------------------
SELECT * FROM emp
WHERE job=:w_job
AND deptno=:w_deptno
-----------------------------------------------------

というクエリ一つでdeptnoが入力された場合にもされない場合にも
対応できるようにしたいです。

どなたかご教授ください。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2007-03-05 14:24
引用:

otfさんの書き込み (2007-03-05 14:03) より:
SELECT * FROM emp
WHERE job=:w_job
AND deptno=:w_deptno



太字の部分を

AND (:w_deptno IS NULL OR deptno=:w_deptno)

にすると良いです。
otf
ベテラン
会議室デビュー日: 2006/08/04
投稿数: 91
投稿日時: 2007-03-05 14:34
NAL-6295さん
返信ありがとうございました。

お示しの方法でやってみたらうまく出来ました!
SQLにこんな使い方があったなんて驚きでした。

本当にありがとうございます!
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-03-05 17:15
速度を気にするならこっちもありかな
deptno = nvl(:w_deptno, deptno)
_________________
かるあ のメモスニペット
otf
ベテラン
会議室デビュー日: 2006/08/04
投稿数: 91
投稿日時: 2007-03-06 10:26
>>かるあさん

そちらのSQLでも動きました!
前に学習した記憶があるのですが、
nvl関数のことを完全に忘れていました(==

貴重なご回答ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)