2013-12-08 69 views
1
CREATE OR REPLACE FUNCTION my_func(str IN NVARCHAR2) 
RETURN NUMBER IS ret_val NUMBER(9); 
DECLARE new_str NVARCHAR2(1000); 
BEGIN 
.... 

這給了錯誤encauntered symbol "declare" ....在PL/SQL塊變量聲明

如果去掉 「申報單」,功能編譯成功。

你能告訴我爲什麼這裏不需要使用word DECLARE

當需要聲明變量時,在BEGIN聲明之前必須有這樣的東西,對嗎?

DECLARE 
variable_1 type; 
variable_2 type; 
BEGIN 
..... 

我在哪裏錯了?

回答

3

匿名PL/SQL塊由關鍵字DECLARE,BEGIN,EXCEPTION和END定義。

DECLARE 
    l_message VARCHAR2 (100) := 'Hello'; 
BEGIN 
    DBMS_OUTPUT.put_line (l_message); 
END; 

一種名爲PL/SQL塊,就像一個函數,過程或包裝,不需要DECLARE關鍵字:

CREATE OR REPLACE PROCEDURE p_hello 
IS 
    l_message VARCHAR2 (100) := 'Hello'; 
BEGIN 
    DBMS_OUTPUT.put_line (l_message); 
END p_hello;