如何在 SQL*PLUS 中定义持久变量

Posted

技术标签:

【中文标题】如何在 SQL*PLUS 中定义持久变量【英文标题】:How to define persistent variable in SQL*PLUS 【发布时间】:2008-09-24 16:33:01 【问题描述】:

我正在尝试在SQL*PLUSORACLE 中执行以下操作。

创建变量 将其作为输出变量传递给我的方法调用 打印输出变量的值

我明白了

未声明的变量

错误。我正在尝试创建一个在会话中持续存在的变量,直到我关闭 SQL*PLUS 窗口。

variable subhandle number;
exec MYMETHOD - (CHANGE_SET => 'SYNC_SET', - DESCRIPTION => 'Change data for emp', 
                                           - SUBSCRIPTION_HANDLE => :subhandle);

print subhandle;

【问题讨论】:

【参考方案1】:

应该没问题 - 请仔细检查您的操作:

SQL> create procedure myproc (p1 out number)
  2  is
  3  begin
  4     p1 := 42;
  5  end;
  6  /

Procedure created.

SQL> variable subhandle number
SQL> exec myproc(:subhandle)

PL/SQL procedure successfully completed.

SQL> print subhandle

 SUBHANDLE
----------
        42

【讨论】:

【参考方案2】:

请您重新发布,但使用代码标记格式化代码....(即 101 010 按钮)我认为出现了一些额外的“-”字符,这意味着它更难以解释。

如果您可以替代/也复制 SQLPlus 窗口的内容,查看 SQLPlus 报告错误也可能会有所帮助?

但它看起来是正确的。

【讨论】:

【参考方案3】:

我不确定这是否是您要查找的内容,但您是否尝试过 &&variable 语法?你可以这样做

select &&subhandle from dual

或者在脚本开头的一些类似的东西,那么subhandle 应该在会话的剩余部分绑定到该值。

【讨论】:

以上是关于如何在 SQL*PLUS 中定义持久变量的主要内容,如果未能解决你的问题,请参考以下文章

读书笔记:SQL 查询中的SQL*Plus 替换变量(DEFINE变量)和参数

读书笔记:SQL 查询中的SQL*Plus 替换变量(DEFINE变量)和参数

springboot系列:mybatis-plus之如何自定义sql|超级详细,建议收藏

如何在 sql*plus 中使用 dbms_lob.substr

如何使用 SQL*Plus 在 Oracle 11g 中显示数据库

如何在 sql*plus 中修复我的假脱机 csv 文件中的格式