2016-11-24 25 views
-2

我嘗試插入數據表「學校」,所以我創建一個文本文件:沒有行後,我創建插入PL/SQL過程

CREATE OR REPLACE PROCEDURE SCHOOL_PRO (id IN NUMBER, name IN VARCHAR2, address IN VARCHAR2, num1 IN INT, num2 IN INT, grade IN INT) 
IS 
BEGIN 
INSERT INTO SCHOOL (ID,NAME,ADDRESS,NUM1,NUM2,GRADE) VALUES (2016001 , 'G' , 'G' , 160 , 0 , 480); 
INSERT INTO SCHOOL (ID,NAME,ADDRESS,NUM1,NUM2,GRADE) VALUES (2016010 , 'H' , 'H' , 150 , 0 , 400); 
INSERT INTO SCHOOL (ID,NAME,ADDRESS,NUM1,NUM2,GRADE) VALUES (2016011 , 'S' , 'S' , 150 , 0 , 528); 
INSERT INTO SCHOOL (ID,NAME,ADDRESS,NUM1,NUM2,GRADE) VALUES (2016101 , 'J' , 'J' , 20 , 0 , 530); 
INSERT INTO SCHOOL (ID,NAME,ADDRESS,NUM1,NUM2,GRADE) VALUES (2016110 , 'B' , 'B' , 10 , 0 , 600); 
INSERT INTO SCHOOL (ID,NAME,ADDRESS,NUM1,NUM2,GRADE) VALUES (2016111 , 'Q' , 'B' , 10 , 0 , 580); 
COMMIT; 
END; 
/

,我執行的文本文件,它顯示了procedure created ,但後來我執行select * from school,它顯示我no rows selected

問題在哪裏?請給我一個手。謝謝!

+0

該程序已創建,但您是否還執行了該程序? 'procedure created'意味着它已經被編譯並且可以被執行;這並不意味着它也被執行了。例如,在SQL Developer或SQL * Plus中,您可以運行以下命令:'exec school_pro'。 – mathguy

+0

@mathguy它的工作原理!謝謝! – dapao

回答

0

你的命令創建過程,但不執行它,所以沒有插入到學校。你想要做的是以下之一:

  1. 更改你的過程,以便它插入作爲參數給出的值,然後爲每個要插入的行調用它。
  2. 將參數放入過程(未使用)並在創建過程後執行該過程。
  3. 忘記過程並執行插入命令。
+0

非常感謝!但我如何更改我的過程,以便在創建它之後不插入數據而不執行過程。 – dapao

+0

@dapao - 你根本不需要一個過程來插入表中的行。另一方面,如果你不執行它,你不能從程序中獲得任何用途;如果你只是創建一個過程,但你沒有執行它,那麼就好像你從來沒有創建過它。創建一個過程對世界沒有影響,只有執行它才行。 – mathguy