在ORACLE中的数字型参数和日期型参数的使用?
请教一下,我的数据表定义为yb_cgryda(cgybh varchar(10),cqybh varchar(10),xm varchar(10),sngzze number,cssj date);通过使用文本框查询相应的数据表中的数据.(其中"cqybh","snggzze","cssj" 有可能为空)
String myString = @"select cgybh,cqybh,xm,cssj,sngzze from yb_cgryda "+
"where nvl(cgybh,0) like :cgybh||'%' and (sngzze>=:sngzze or nvl(:sngzze,0)=0) and (cssj>:cssj or :cssj is null)";
OracleCommand myOracleCommand = new OracleCommand(myString, myOracleConnection);
myOracleCommand.Parameters.Add(":cgybh",OracleDbType.Varchar2,20);
myOracleCommand.Parameters[":cgybh"].Value = this.TxtCgybh.Text;
myOracleCommand.Parameters.Add(":sngzze", OracleDbType.Double, 20);
if (this.TxtSngzze.Text == "")
{
myOracleCommand.Parameters[":sngzze"].Value = 0;
}
else
{
myOracleCommand.Parameters[":sngzze"].Value = this.TxtSngzze.Text;
}
myOracleCommand.Parameters.Add(":cssj", OracleDbType.Date, 20);
if (this.TxtCssj.Text == "")
{
myOracleCommand.Parameters[":cssj"].Value = System.DBNull.Value;
}
else
{
myOracleCommand.Parameters[":cssj"].Value = DateTime.Parse(this.TxtCssj.Text);
}
myOracleCommand.Parameters.Add(":xm", OracleDbType.Varchar2, 20);
myOracleCommand.Parameters[":xm"].Value = this.TxtXm.Text;
其中要求如果参数如果TxtSngzze如果没有输入数字就视为字段SNGGZE全条件满足,有数值的化要求字段SNGZZE大于它.同样CSSJ也是如此,那我该如何写这个查询命令啊?
上面这种写法它会保ORA-01008的错误.
--------------------编程问答-------------------- cqybh varchar(10)
这个入参在你的sql语句里面未使用 --------------------编程问答-------------------- 那个01008的错误应该是cqybh这个参数未被使用造成的 --------------------编程问答-------------------- 如果在vs2005中使用数字型(大于关系)和日期型参数(大于关系)该如何写SQL语句呢? --------------------编程问答-------------------- 比如有一个表yb_cgryda(cgybh varchar(10),cssj date);
如果采用了参数(:cssj),我如何能够写查询语句?
(如果参数:cssj是空,则该表全查询;如果参数:cssj输入了一个数字,就要求cssj必须大于参数:cssj的记录才能出现);
如果我像这么写,就会报错ora-01008
String myString = @"select cgybh,cssjfrom yb_cgryda where (cssj>:cssj or :cssj is null)";
myOracleCommand.Parameters.Add(":cssj", OracleDbType.Date, 20);
if (this.TxtCssj.Text == "")
{
myOracleCommand.Parameters[":cssj"].Value = System.DBNull.Value;
}
else
{
myOracleCommand.Parameters[":cssj"].Value = DateTime.Parse(this.TxtCssj.Text);
}
--------------------编程问答-------------------- 那个没得人会啊?
补充:.NET技术 , C#