【问题标题】:How to get OUT parameter by executing stored procedure in CMD @echo , ORALCE-PL/SQL?如何通过在 CMD @echo、ORACLE-PL/SQL 中执行存储过程来获取 OUT 参数?
【发布时间】:2016-07-26 07:58:40
【问题描述】:

过程结构 :: Package.Procedure(In a,Out b)


@echo 执行 Package.Procedure('%a%',?XX?) | sqlplus %USER_ID%/%PASSWORD%@%SID%


我可以执行带有 IN 参数或不带参数的过程。 我想知道如何处理 OUT 参数。

**** 它在 CMD 内部,而不是 SQLPLUS ****

【问题讨论】:

  • 您使用 windows shell 构建 PL/SQL 语句这一事实几乎无关紧要,因为它正在通过管道传输到 SQL/Plus 并在那里运行(windows shell 无法解析 SQL 并且不知道您的数据库)。因此,任何可以在 SQL/Plus 中运行的代码都可以使用,因为您只需要回显它并通过管道传输它,以便 SQL 客户端可以解析它。
  • 感谢您的解释..那么有什么方法可以通过仅使用 cmd 批处理文件来处理程序..!!

标签: oracle plsql cmd


【解决方案1】:

只是执行的另一种变体。尝试从 CMD 执行整个块,我想这是可行的。

SET AUTOPRINT ON;
var out_param VARCHAR2(100); -- Bind Variable
EXEC Package.Procedure('Input_param',:out_param);

----------------------------------FROM CMD--------------------------------------

C:\windows\system32>@ECHO DECLARE my_num NUMBER; AVROY.TEST_CMD(my_num);dbms_out
put.put_line(my_num); END; |sqlplus <username>/<password>@SID

【讨论】:

  • 如果这有帮助,请检查一下。
  • 在 CMD 代码中,你在哪里得到输出? (dbms_out put.put_line(my_num);) 为此..
【解决方案2】:

一种方法是编写如下的PL/SQL代码块:

DECLARE
    var NUMBER;
BEGIN
    Package.Procedure('%a%',var);
    dbms_output.put_line(var);
END;

【讨论】:

  • 您可以在 SQL Plus 中编写它并使用 / 字符终止它,或者将其保存在文本文件中并使用 sqlplus @file.txt 使用 SQL Plus 启动它
  • 我知道用 sqlPlus 写,我想知道 CMD。谢谢
【解决方案3】:

在 SQLPlus 命令提示符下,您可以编写如下内容

variable z NUMBER
BEGIN
    Package.Procedure('%a%', :z);
END;

You should get "Procedure executed successfully"

print z;

你应该得到价值

或替代

SET SERVEROUTPUT ON

DECLARE
    z NUMBER;
BEGIN
    Package.Procedure('%a%',z);
    dbms_output.put_line(z);
END;

【讨论】:

  • 所以你想在不使用任何 Oracle 客户端(如 sqlplus、sql developer)的情况下调用 Proc。应该是通过 CMD 吧?
  • DECLARE z NUMBER; 没有声明绑定变量,它声明了一个 PL/SQL 变量,因此您不能将其引用为 :z,您将获得 SP2-0552: Bind variable "Z" not declared.
猜你喜欢
  • 1970-01-01
  • 2012-03-11
  • 2017-02-18
  • 2016-01-20
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多