组长让偶调查一个问题,问题如下:
在VB中,执行下列代码(oracle数据库)
sSql = sSql & "SELECT "
sSql = sSql & "unbincd, "
sSql = sSql & "chokbn,"
sSql = sSql & "NVL(NULLIF(teisiymd,0),99999999) AS teisiymd "
sSql = sSql & "FROM MSOKO "
Set objRs = G_OraDatabase.DbCreateDynaset(sSql, 0)If G_nDate >= objRs!teisiymd Then
  Set objRs = Nothing
  Exit Function
END IF现在问题是当上面的teisiymd字段是0的时候,在SQLPLUS里面是99999999,但在vb里面objRs!teisiymd竟然是0。为什么呀?当把上面SQL文中的别名由teisiymd改为其他任意的名字时,发现vb里面执行的结果是99999999.好奇怪呀,是不是数据库的设置问题?请各位大虾救救婷婷吧!分不够可以再给~~~

解决方案 »

  1.   

    sSql & "NVL(NULLIF(teisiymd,0),99999999) AS teisiymd "别名之所以叫别名,就是因为要和原名不一样.至于SQLPLUS如何规定不管它,至少规范的用法就不应该用一个与原来字段同名的名字作为别名,我认为应该是错的,不知SQLPLUS为什么认可.
      

  2.   

    这个我有点了解,加我qq185435733,,msn,[email protected]
      

  3.   

    刚试了一下,倒是没有出错.在MSSQL里,这样整也没错.但是在逻辑上还是说不过去的.尽量不要这么用.我这么多年都从来没想过要去这么整,甚至以为在语法上都不对呢.但并非是以为在语法上不对才不这么用(否则早就可以试验一下),而是相反.
      

  4.   

    各位大虾,这代码原来后台是sql server的,现在改为oracle。
    以前同样的代码在sql server里面运行没有问题啊。为什么到了oracle里面出问题啦?有没有更加简单的修改办法啊,因为有好多类似的SQL文,一个个去改别名太麻烦了...
      

  5.   

    sSql & "NVL(NULLIF(teisiymd,0),99999999) AS teisiymd "
    这样用好奇怪的,你换一个名字吧一个一个改吧,耐心点。
      

  6.   

    “标志一个程序员成熟与否,就看他善不善于防范和规避问题.
    道已经偏了,还要硬钻死胡同,哪怕把胡同钻破了走通了,看起来好看吗?就象这个问题,正常解决不了,必须花点手段,而这些手段,在日后看来,或者不知情者看来,就会显得非常古怪. 代码如果写得很不自然,东打补丁西打补丁,肯定是失败的.”
    agree!!!
    另问:
    shenting007 (st)是程序员吗?
      

  7.   

    我的看法和VBAdvisor(Sunlight)一致