我試圖將一些Informix ESQL轉換爲Oracle Pro * C。在現有的Informix代碼中,「SERIAL」數據類型用於指示自動遞增列。根據Oracle文檔,用於Informix的Oracle遷移工作臺應該能夠處理這個問題,並解釋說它將「SERIAL」數據類型轉換爲帶有關聯的Oracle序列和觸發器的「NUMBER」。但是,當試圖運行該工具時,它只是用「錯誤(序列)」替換「SERIAL」一詞,所以我一直試圖手動添加觸發器/序列。Informix「序列化」Oracle數據庫/序列/觸發器Pro * C
他們的例子在這裏:http://docs.oracle.com/html/B16022_01/ch2.htm#sthref112顯示了一個這樣做的方法。該序列似乎想創建這樣一個觸發器時是相當簡單的,但是:
CREATE TRIGGER clerk.TR_SEQ_11_1
BEFORE INSERT ON clerk.JOBS FOR EACH ROW
BEGIN
SELECT clerk.SEQ_11_1.nextval INTO :new.JOB_ID FROM dual; END;
的PRO * C預拿起這裏的「創建」關鍵字,並決定我不能使用主機變量「:new.JOB_ID」,因爲主機變量不能與「CREATE」語句一起使用。
我的問題是,有沒有辦法創建一個將Oracle序列鏈接到特定列而不使用主變量來指定列名稱的觸發器? Oracle文檔似乎表明他們的遷移工具應該能夠應付,這意味着必須有某種方式來做到這一點。然而,我發現所有使用觸發器的例子都使用了導致預處理器投訴的主機變量。
謝謝你的時間。
(注:我已經在上面的例子中,Oracle文檔中的示例中使用的觸發/順序/列名)
爲什麼不用SQL腳本創建觸發器?我從C程序中看不到需要這樣做。 – 2011-12-16 16:33:26