我想在PL/SQL中創建一個表格在PL/SQL中創建表?
我該如何實現這一目標?
的愈來愈
錯誤報告:
ORA-00933: 「SQL命令不能正確地結束」
這裏是我的錯誤與
DECLARE
station_id_ms1 NUMBER :=10347;
realtime_start DATE :=to_date('2012-01-01 00:00:00','YYYY-DD-MM HH24:MI:SS');
realtime_end DATE :=to_date('2012-07-01 00:00:00','YYYY-DD-MM HH24:MI:SS');
BEGIN
EXECUTE IMMEDIATE ('
CREATE TABLE new_table_name
AS
SELECT
((realtime - to_date(''01-JAN-1970'',''DD-MON-YYYY'')) * (86400)) AS realtime_ms1,
magnetic_ms_id,
ADC_value_pp_2_mgntc_fld_amp(ch2_value,ch2_gain_value,magnetic_ms_id,2) AS B_x_ms1,
ADC_value_pp_2_mgntc_fld_amp(ch1_value,ch1_gain_value,magnetic_ms_id,1) AS B_y_ms1,
real_nanosecs2*4/3*360/20e6 AS phase_x_ms1,
real_nanosecs1*4/3*360/20e6 AS phase_y_ms1
FROM
raw_mag
WHERE
magnetic_ms_id = '||station_id_ms1||'
AND realtime > '||realtime_start||'
AND realtime < '||realtime_end||'
AND ch1_tune_value = 0
AND realtime < pkg_timezone.change_timezone(gettime,''CET'',''UTC'')
');
END;
代碼
爲什麼'EXECUTE IMMEDIATE'?只需創建表格。 – vulkanino 2012-03-06 15:48:32
@vulkanino:因爲你不能在EXECUTE IMMEDIATE下執行PL/SQL內部的DDL語句。 – Benoit 2012-03-06 15:49:01
@Benoit - 這就是問題所在。爲什麼PL/SQL?爲什麼不創建表格?在有些情況下,這種做法是合法的,但這種做法被誤導或明顯錯誤的情況下,它們的數量遠遠超過了這一數字。 – APC 2012-03-07 12:25:57