這裏有新的PL/SQL人員。我有一個(成功編譯)PL/SQL的功能塊,通過添加一個新的名詞,以它操縱在我的數據庫中的表:ORACLE PL/SQL:使用多個參數調用存儲過程函數(DML查詢)
create or replace FUNCTION add_new_term
(TERM_ID_IN IN NUMBER, TERM_IN IN VARCHAR2, IS_METATERM_IN IN NUMBER)
RETURN VARCHAR2
IS
add_term CV_TERMS.TERM_NAME%TYPE; --TERM_NAME is VARCHAR2 type
BEGIN
INSERT INTO CV_TERMS (TERM_ID, TERM_NAME, IS_METATERM)
VALUES (TERM_ID_IN, TERM_IN, IS_METATERM_IN);
dbms_output.put_line('New term successfully added to CV_TERMS table: ' || TERM_IN);
RETURN add_term;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
raise_application_error (-20001, 'You have tried to insert a duplicate term.');
WHEN OTHERS THEN
raise_application_error (-20002, 'An error has occurred inserting a term - '|| SQLCODE ||' -ERROR- '|| SQLERRM);
END add_new_term;
我調用這個函數就像調用存儲過程:
DECLARE
add_term_success cv_terms.term_name%type;
BEGIN
add_term_success := add_new_term(cv_terms_pk.NEXTVAL, 'TESTTT', 0);
END;
SQLDeveloper告訴我該過程已成功完成,但該術語尚未添加到表中。我獨立創建了序列cv_terms_pk
(它不在表CV_TERMS'SQL中)。它需要在那裏嗎?我是否通過不正確?或者我的add_term
聲明有問題?想法?
你犯什麼地方? – tbone
您是否查詢表格以驗證它不在那裏?我注意到你正在返回'add_term',但從來沒有設置一個值。同樣,您正在返回一行輸出,但是在您返回後已經停止執行之後。所以你的返回值將始終爲NULL,並且控制檯中不會顯示任何輸出。 –
@HepC我的確在查詢表格。他們正在寫信給桌子。傻我。當我在桌子前搜索他們時,他們沒有出現。所以除了控制檯輸出外,所有東西都可以工你能再解釋一下嗎?我知道我在返回之後放置了返回行(我將其切換),但是將值設置爲'add_term'? @tbone我沒有提交。 – snl330