--C#的没问题吧.就看这句sql先定义两个参数:  string v_country,string v_province
if (v_country.trim().tostring()=="")
{
    :COUNTRY="COUNTRY";
}
else
{
    :COUNTRY=v_country;
}if (v_province.trim().tostring()=="")
{
    :PROVINCE="PROVINCE";
}
else
{
    :PROVINCE=v_province;
}SELECT CITY FROM COM_ZIPCODE WHERE (COUNTRY = :COUNTRY) AND (PROVINCE= :PROVINCE) GROUP BY CITY ORDER BY CITY如果这时候输入的v_country为空的时候,那句sql就变成了SELECT CITY FROM COM_ZIPCODE WHERE (COUNTRY = COUNTRY) AND (PROVINCE= :PROVINCE) GROUP BY CITY ORDER BY CITY这样就可以不用country这个参数了.

解决方案 »

  1.   

    我不知道你过程是怎么写的,但是我觉得你的程序写的有点问题.如果使用过程执行select..是可以的,但是传参数也不是这么传的. 如果你不使用过程,直接写select 在程序里.是不要传递参数的.
      

  2.   

    http://www.cnoug.org/viewthread.php?tid=27309
      

  3.   

    SELECT CITY FROM COM_ZIPCODE WHERE (COUNTRY = :COUNTRY) AND (to_char(PROVINCE)= :PROVINCE) GROUP BY CITY ORDER BY CITY这样,参数是null的时候,你可以用""处理!
      

  4.   

    zhpsam109(孤寂无边) :
    还是不行啊!当我用下面的语句时出错。
    sqlSelectCity.Parameters(":PROVINCE").Value = ""
    r = sqlSelectCity.ExecuteReader '这一行出错
    "Parameter ':PROVINCE': No size set for variable length data type: String."
      

  5.   

    SELECT CITY FROM COM_ZIPCODE WHERE (COUNTRY = :COUNTRY) AND (DECODE(PROVINCE,NULL,"",PROVINCE) = :PROVINCE) GROUP BY CITY ORDER BY CITY
      

  6.   

    最简单的方法把你的country=country换成 country like 'country%'
    空值也能查了
      

  7.   

    Torrice(沙丁鱼) :
    SELECT CITY FROM COM_ZIPCODE WHERE (COUNTRY = :COUNTRY) AND (DECODE(PROVINCE,NULL,"",PROVINCE) = :PROVINCE) GROUP BY CITY ORDER BY CITY
    语法错误:ORA-01741 illegal zero-length identifier我再试试:
    SELECT CITY FROM COM_ZIPCODE WHERE (COUNTRY = :COUNTRY) AND (DECODE(PROVINCE,NULL," ",PROVINCE) = :PROVINCE) GROUP BY CITY ORDER BY CITY
    语法错误:ORA-00904: " ": invalid identifier
      

  8.   

    不会用 like 啊
    死脑筋