2013-12-08 72 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;