2017-08-13 41 views
0

我正在創建一個觸發器,用於在過去執行插入日期。使用變量oracle觸發器從sysdate中減去天數

days_trans := dbms_random.value(14,90); 
time_avail := sysdate - interval ':days_trans' day; 

這給了我

PLS-00166: bad format for date, time, timestamp or interval literal

我應該如何減去可變恆定?

+0

只需使用'time_avail:= SYSDATE - days_trans;'。字符串':days_trans'在間隔文字中是不允許的,正確的語法請參見[here](https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm#i38598)。順便說一句,dbms_random.vaue給出浮點值,而不是整數,它可能會更好地截斷或舍入該數字,因爲你可以得到驚人的結果。 – krokodilko

+0

謝謝。 trunc函數也相當有用。 –

回答

1

您不能將變量綁定到文字。 INTERVALTIMESTAMP使用,使用

time_avail := sysdate - days_trans; 

time_avail := systimestamp - days_trans * interval '1' day; 
+0

簡單的算術方法更適合OP的要求 – APC