【问题标题】:How to Execute stored procedure from SQL Plus?如何从 SQL Plus 执行存储过程?
【发布时间】:2011-01-08 02:17:45
【问题描述】:

我在 oracle 中有一个存储过程,想通过 SQLPlus 对其进行测试。

如果我使用

execute  my_stored_proc (-1,2,0.01) 

我收到此错误

PLS-00306: wrong number or types of arguments in call to my_stored_proc

proc的开头是这样的

create or replace PROCEDURE my_stored_proc
( a IN NUMBER, 
  b IN NUMBER, 
  c IN NUMBER, 
  z out NUMBER
) AS ....

我需要为 out 参数提供一个 var 吗?我试过了:

var z  NUMBER;

但是当我尝试运行 proc 时出现此错误

execute  my_stored_proc (-1,2,0.01,z) 
PLS-00201: identifier 'Z' must be declared

当我在 SQL-Developer 中时,它给了我用法,并以相反的顺序显示输入,即:

execute my_stored_proc(z number,c number,b number,a number);

您是否以相反的顺序提供它们,或者只是 SQL-Developer 提供的东西

我没有编写程序,我通常不会处理它们,所以我可能会遗漏一些明显的东西。

谢谢

【问题讨论】:

    标签: sql oracle stored-procedures


    【解决方案1】:

    您有两个选择,PL/SQL 块或 SQL*Plus 绑定变量:

    var z number
    
    execute  my_stored_proc (-1,2,0.01,:z)
    
    print z
    

    【讨论】:

      【解决方案2】:

      您忘记将 z 作为绑定变量。

      以下 EXECUTE 命令运行引用存储过程的 PL/SQL 语句:

      SQL> EXECUTE -
      > :Z := EMP_SALE.HIRE('JACK','MANAGER','JONES',2990,'SALES')
      

      注意存储过程返回的值被返回到:Z

      【讨论】:

      • -1 函数可以在表达式中使用,过程不能。
      猜你喜欢
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 2019-02-05
      • 1970-01-01
      • 1970-01-01
      • 2015-08-28
      相关资源
      最近更新 更多