2010-07-14 79 views
0
ResultSet rs=st.executeQuery(
    "select j.vc_jo_no, 
      j.dt_jo_date, 
      p.vc_product_name 
    from mst_jobcard j, 
      mst_prod p 
    where j.vc_product_code=p.vc_product_code 
    and j.dt_jo_date=to_char("+tdate+","+"'"+dd-mm-yy+"'"+") 
    "); 

在我指定的查詢中,它應該基於上述查詢中傳遞的日期參數顯示記錄。 vc_jo_no,dt_jo_date取自mst_jobcard表,vc_product_name取自mst_prod表。 我已加入表格。 請幫助我如何使用日期的to_char函數。 當我在to_char函數中指定格式即dd-mm-yy時,它會給出錯誤。 請幫助..應如何參數化Oracle中基於日期的查詢

+3

請格式化您的代碼,適當使用標點符號和大寫字母,並告訴我們**錯誤說的是什麼**! – Quentin 2010-07-14 10:20:56

+0

這也可能有助於瞭解「st」是什麼。 – 2010-07-14 12:22:05

回答

1

所以你正在運行:

executeQuery("select … where … j.dt_jo_date=to_char("+tdate+","+"'"+dd-mm-yy+"'"+")"); 

的第一件事情,儘量把那個字符串變量,輸出它,看看它是否在正確的格式。

你試過:

"… to_char("+tdate+",'dd-mm-yy'") 

好像你正在做不必要的雜技與字符串。

最後,請看Burleson Consulting的「Oracle to_char usage」。這是第一個鏈接關閉Google。有人說谷歌是一個首先尋找的好地方。

+3

+ 1「有人說谷歌是首先看的好地方。」 - 是的,只是可惜其總是b **** Y Burleson誰出來頂! – 2010-07-14 13:15:52

4

如果您要將日期作爲字符串傳遞,Oracle需要用單引號將它包圍。此外,「dd-mm-yy」對我來說看起來並不合適。試試這個:

ResultSet rs=st.executeQuery(
"select j.vc_jo_no, 
     j.dt_jo_date, 
     p.vc_product_name 
from mst_jobcard j, 
     mst_prod p 
where j.vc_product_code=p.vc_product_code 
and j.dt_jo_date=to_char('"+tdate+"','dd-mm-yy') 
"); 

也就是說,傳遞參數的這種方法不能有效傳遞參數 - 這將導致數據庫來分析不同的查詢請求的每個不同的日期,這很可能導致可伸縮性問題。

更好的方法是綁定參數,使用ResultSet提供的任何方法來綁定變量。你可能會發現你甚至可以原生地綁定一個日期變量而不必將其轉換爲字符串。

+0

+1尤其適用於綁定變量。如果這是.Net,那麼我認爲語法是:to_char(?,'dd-mm-yy') – 2010-07-14 13:17:05