在pl / sql块中声明变量

时间:2013-12-08 11:32:35

标签: oracle plsql oracle11g syntax-error

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" ....

的错误

如果删除“DECLARE”,则编译成功。

你能否告诉我为什么不需要使用DECLARE字?

当需要声明变量时,在BEGIN语句必须这样之前,对吗?

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

我哪里错了?

1 个答案:

答案 0 :(得分: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;