当前位置:编程学习 > C#/ASP.NET >>

在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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,