Oracle 临时和永久存储过程
我正在Oracle中创建存储过程,其中一个存储过程是永久创建的,另一个存储过程是临时创建的,并在达到其目的后消失。它是如何工作的请在何时使用以及如何创建时给出您的指导 --这不是在DB中创建的,只是临时创建并消失Oracle 临时和永久存储过程,oracle,plsql,Oracle,Plsql,我正在Oracle中创建存储过程,其中一个存储过程是永久创建的,另一个存储过程是临时创建的,并在达到其目的后消失。它是如何工作的请在何时使用以及如何创建时给出您的指导 --这不是在DB中创建的,只是临时创建并消失 DECLARE name varchar2(10); PROCEDURE printVal (name varchar2) IS BEGIN dbms_output.put_line ('name:' || name); END; BEGIN name := 'Joe
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;
显然有不同的语法-第一个是匿名块,第二个创建存储过程。预期的行为正是您所观察到的,并且在Oracle PL/SQL文档中有所涉及 显然有不同的语法-第一个是匿名块,第二个创建存储过程。预期的行为正是您所观察到的,并且在Oracle PL/SQL文档中有所涉及 要理解,请将sql分为两部分 存储过程: 存储过程存储在数据库中。 我们可以在创建后随时调用存储过程。 存储过程还支持输入输出参数。 匿名块: 这些是未命名的pl/sql块。 匿名块不存储在数据库中。 无法传递参数
要理解这一点,请将sql分为两部分 存储过程: 存储过程存储在数据库中。 我们可以在创建后随时调用存储过程。 存储过程还支持输入输出参数。 匿名块: 这些是未命名的pl/sql块。 匿名块不存储在数据库中。 无法传递参数
我认为您会感到困惑,因为第一个匿名块包含一个pl/sql,它定义了一个名称printVal。但是因为它存在于匿名块中,所以不会存储在数据库中。感谢您的回复和回答。我想您可能会感到困惑,因为第一个匿名块包含一个pl/sql,它定义了一个名称printVal。但是因为它存在于匿名块中,所以它不会存储在数据库中。感谢您的回复和回答。您所说的不能传递参数是什么意思?在我的第一个示例中,我们将值临时传递给SP create。无法传递参数-我的意思是,我们不能像在存储过程中定义的那样在匿名块中定义输入输出参数。示例中的过程没有存储,因此它不是存储过程。还值得一提的是,/字符仅在某些客户端工具中用于指示输入结束和要执行的指令,而不是PL/SQL语言的一部分?在我的第一个示例中,我们将值临时传递给SP create。无法传递参数-我的意思是,我们不能像在存储过程中定义的那样在匿名块中定义输入输出参数。示例中的过程没有存储,因此它不是存储过程。还值得一提的是,一些客户端工具只需要/字符来指示输入的结束和要执行的指令,而不是PL/SQL语言的一部分。
---------- Stored Procedure Start--------
DECLARE name varchar2(10);
PROCEDURE printVal (name varchar2) IS
BEGIN
dbms_output.put_line ('name:' || name);
END;
--------- Stored Procedure End-----------
----------anonymous block Start----------
BEGIN
name := 'Joe';
printVal(name);
END;
/
----------anonymous block end ------------