如何在 SQL*PLUS 中定义持久变量
Posted
技术标签:
【中文标题】如何在 SQL*PLUS 中定义持久变量【英文标题】:How to define persistent variable in SQL*PLUS 【发布时间】:2008-09-24 16:33:01 【问题描述】:我正在尝试在SQL*PLUS
在ORACLE
中执行以下操作。
我明白了
未声明的变量
错误。我正在尝试创建一个在会话中持续存在的变量,直到我关闭 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