2011-04-04 69 views
0

我是PL SQL代碼的新手,需要編寫插入查詢語句的幫助。 例如:我想在員工表中插入員工表,其中只有員工姓名更改,但城市是恆定的。如何在插入語句中使用PL SQL常量

DECLARE 
    emp_var_prefix varchar2(12) := 'QATEST'; 
    emp_var_temp varchar2(12) := ''; 
    city constant varchar(30) := 'dallas' 

begin 
    DBMS_OUTPUT.ENABLE; 
    for i in 1..2 loop 
    emp_var_temp := emp_var_prefix; 
    emp_var_temp := emp_var_prefix ||i; 

    INSERT INTO EMPLOYEE TABLE ('EMPLOYEE_NAME', 'CITY') values ('emp_var_temp', '<what should I put here for constant dallas for city name>'); 

    DBMS_OUTPUT.PUT_LINE(emp_var_temp); 
    end loop; 

END; 

回答

2

看來,你會希望像

DECLARE 
    l_emp_var_prefix varchar2(12) := 'QATEST'; 
    l_emp_var_temp varchar2(12) := ''; 
    l_city constant varchar(30) := 'dallas' 
begin 
    DBMS_OUTPUT.ENABLE; 
    for i in 1..2 loop 
    l_emp_var_temp := l_emp_var_prefix ||i; 

    INSERT INTO EMPLOYEE(employee_name, city) 
     values (l_emp_var_temp, l_city); 

    DBMS_OUTPUT.PUT_LINE(l_emp_var_temp); 
    end loop; 

END; 

這是一般一個壞主意,使用的變量名也列names--,使得它非常有可能你會遇到範圍錯誤,你打算引用一個變量,編譯器無意中假定你打算引用該列。那些調試相當討厭。採用一些約定,如l_的前綴局部變量來區分它們與列名或參數可以加上前綴p_更容易。

+0

謝謝賈斯汀。請牢記這一點。雖然我原來的問題仍然是「如何在插入select語句中插入常量值:在上面的例子中,城市 – Secpert1 2011-04-04 20:42:35

+0

@ Secpert1 - 除非我遺漏了一些東西,這會告訴你如何在INSERT語句中插入常量'l_city'。您是否明確地試圖瞭解如何強制Oracle在INSERT語句中使用與列名稱相同的變量? – 2011-04-04 20:44:29

+0

我的錯誤是,我用l_定義了局部變量,並且再次運行了插入語句,並且它成功運行,在表格中插入常量,非常感謝Justin!欣賞它 – Secpert1 2011-04-04 20:58:43