临时和永久存储程序

时间:2017-02-11 18:54:03

标签: oracle plsql

我正在Oracle中创建存储过程,其中一个是永久创建的,另一个是在服务于其目的后暂时创建并消失。如果它正常工作,请在使用时及其创建方式提供指导。

----这不是在DB中创建的,只是暂时创建并消失

DECLARE   name varchar2(10);
PROCEDURE printVal (name varchar2) IS
BEGIN
   dbms_output.put_line ('name:' || name);
END;  
BEGIN
  name := 'Joe';
  printVal(name);
END;
/

----这是在DB中创建的,永久可用

create PROCEDURE printVal (name varchar2) IS
BEGIN
   dbms_output.put_line ('name:' || name);
END; 

2 个答案:

答案 0 :(得分:4)

要理解,请将sql分为两部分。

存储过程:

  • 存储过程存储在数据库中。
  • 我们可以在创建后随时调用存储过程。
  • 存储过程还支持输入输出参数。

匿名阻止:

  • 这些是未命名的pl / sql块。
  • 匿名块未存储在数据库中。
  • 无法通过参数
{{1}}

答案 1 :(得分:3)

嗯,显然有不同的语法 - 第一个是匿名块,第二个创建存储过程。预期的行为正是您所观察到的,并且由Oracle PL / SQL文档涵盖。 https://docs.oracle.com/cloud/latest/db112/LNPLS/overview.htm#LNPLS141