2016-04-28 70 views
0

我需要幾天添加日期哈納存儲過程,但我收到錯誤消息需要的天數在SAP HANA添加日期存儲過程

錯誤,而解析日期/時間

v_end_date_plus:= add_days(TO_DATE( '|| || p_end_date', 'YYYY-MM-DD'),90)

其中p_end_date是DATE和我傳遞該值作爲參數而調用存儲過程。

v_end_date_plus是一個DATE變量。

但我在運行時遇到錯誤。

是否有其他方式或我在做什麼錯?

+0

您應該發佈錯誤消息。 – Hannobo

回答

-1

p_end_date應該是一個varchar字段,或者是您的技術中使用的適當的字符串文字。它不應該用引號引起來。

v_end_date_plus := add_days (TO_DATE(p_end_date , 'YYYY-MM-DD'), 90) 

說明使用Oracle作爲參考:

在Oracle數據庫中,默認的日期格式是DD-MON-RR或DD-MON-YYYY。

所以,如果我使用正確的日期格式到p_end_date變量,我能夠獲得輸出。 enter image description here

但是,如果我偏離這種默認格式,我的嘗試會出錯。

enter image description here

所以,如果我想的靈活性,重新定義p_end_date在我選擇的格式,而不是按照默認的設置,它應該是一個字符串文字。(VARCHAR在Oracle中)。

編輯:

這個答案的實質只是爲了表明變量應爲VARCHAR傳遞。從下面拉斯溴的建議借用修改p_end_date變量的語法:

v_end_date_plus := add_days (TO_DATE(:p_end_date , 'YYYY-MM-DD'), 90) 
+0

Oracle和SAP HANA在腳本語言方面有很大的不同。在這種情況下,用比喻解釋不起作用。 –

+0

@LarsBr。,好的,指出。那麼我們確定這種擴展的比喻在這種情況下是行不通的嗎?快速瀏覽告訴我,HANA中存在類似的語法。 –

+0

@ user4836066,如果您嘗試過並且我的解決方案無法正常工作,請在此處聲明。然後我會刪除答案。 –

1

即使你沒有張貼您會收到什麼樣的錯誤,我想在你的代碼的問題是你提到你的輸入變量的方式。

v_end_date_plus := add_days (:p_end_date , 90); 

使用參數前面的冒號(:),您應該可以使用它而不必將其轉換爲不同的數據類型。

0

@LarsBr。是否正確,您需要冒號(:)才能引用變量,並且如果它確實是DATE類型,則不需要再次轉換TO_DATE。

但是,在你的例子中,你有一些混合引號和連接,讓我覺得你實際上想用p_end_date構造一些字符串。這將需要轉換爲日期第一:

p_end_date := '2016-05-03'; -- for example 
v_end_date_plus := add_days(TO_DATE(:p_end_date , 'YYYY-MM-DD'), 90); 

的部分' || p_end_date || '在你的例子看起來也有點像整個代碼實際上是在EXEC或類似的使用字符串的一部分。如果是這種情況,則需要爲兩個參數都逃過單引號。

exec 'v_end_date_plus := add_days(TO_DATE(''' || :p_end_date || ''', ''YYYY-MM-DD''), 90)';