如何执行pl/sql过程

Posted

技术标签:

【中文标题】如何执行pl/sql过程【英文标题】:how to execute pl/sql procedure 【发布时间】:2013-11-27 11:28:05 【问题描述】:

程序:

create or replace 
PROCEDURE ADDITION 
(
  A IN NUMBER  
, B IN NUMBER  
, C OUT number
) AS 
BEGIN
  C := A+B;
  dbms_output.put_line(c);
END ADDITION;

执行:

begin
 addition(4,5);
end;

错误:

PLS-00306: wrong number or types of arguments in call to 'ADDITION'
ORA-06550: line 2, column 2:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

如何纠正这个错误。让我知道代码有什么问题

【问题讨论】:

【参考方案1】:

您的过程需要一个 out 参数,您还需要提供该参数:

declare
 add_result number;
begin
 addition(4,5,add_result);
end;
/

【讨论】:

错误:-->PLS-00905:对象 SYSTEM.ADDITION 无效 ORA-06550:第 4 行,第 2 列:PL/SQL:语句被忽略 06550。00000 -“行 %s,列 % s:\n%s" *原因:通常是 PL/SQL 编译错误。 *行动: @user3021349:那么您并没有告诉我们一切,因为这确实有效:sqlfiddle.com/#!4/2860e/2 我在这里喜欢variable n number addition(4,5,:n); print n;,但其中有些问题。你能纠正这个 @user3021349:sqlfiddle 不支持 DBMS_OUTPUT,但您可以看到没有错误。所以突然间你有了一个“变量”:n。那个是从哪里来的?您为什么不在原始问题中包含该信息?您使用哪个 SQL 客户端(工具)来运行这些语句? 但是我在 sql developer 中试过你的答案是什么,我得到了错误。为什么?

以上是关于如何执行pl/sql过程的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 过程和 Toad 执行?

如何在pl / sql中同时在不同会话中执行存储过程

PL/SQL 过程的同步。如何保证一次只执行一个程序? [复制]

如何确定通用 PL/SQL 过程的参数(执行 group by 子句)?

oracle SQL语句中怎么样调用存储过程

如何从 PL/SQL 过程执行“describe table_name”命令?