前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 SQL*Plus 23c 中的 argument 命令

在 SQL*Plus 23c 中的 argument 命令

作者头像
Yunjie Ge
发布2024-03-22 12:58:21
930
发布2024-03-22 12:58:21
举报
文章被收录于专栏:数据库与编程数据库与编程

argument 命令在 SQL*Plus 23c 和 SQLcl 22.4 中允许我们管理传递给脚本的参数。这包括如果参数缺失时的提示或默认值,以及是否应将来自提示的用户输入回显到屏幕上。

请记住,SQLcl 是独立于数据库发布的,因此我们可以针对从 11.2 版本开始的任何数据库版本使用 argument 命令。

PROMPT 选项

argument 命令的 PROMPT 选项允许我们设置当命令行中缺少参数时所显示的提示文本。

创建一个名为 "test.sql" 的文件,并添加以下内容。

代码语言:javascript
复制
set verify off
argument 1 prompt "Enter a value for the first argument:"

column arguments format a10

select '&1' as arguments;

undefine 1

让我们来分解一下上面的 sql。

  • 我们使用 set verify off,这样就不会显示参数的旧值和新值。
  • 我们使用 argument 命令来定义参数 编号1 的提示文本。
  • 我们在查询中使用参数来显示值。
  • 我们使用 undefine 来确保参数的当前值不被重用。在SQLcl中,我们可以使用 SET PARAMETERPOLICY ISOLATE 来实现这一点,但使用 undefine 对这两种工具都有效。

我们测试一下这个 sql 脚本。

在第一个示例中,系统会提示我们输入参数。我们输入值“banana”。

代码语言:javascript
复制
SQL> @test.sql
Enter a value for the first argument:banana

ARGUMENTS
----------
banana

在第二个示例中,系统会提示我们输入参数。我们输入值“apple”。

代码语言:javascript
复制
SQL> @test.sql
Enter a value for the first argument:apple

ARGUMENTS
----------
apple

在第三个示例中,我们在命令行上提供了值“pear”,并且不会提示我们输入值。

代码语言:javascript
复制
SQL> @test.sql pear

ARGUMENTS
----------
pear

1 row selected.

PROMPT和HIDE(仅限SQL*Plus)

在 argument 命令中添加 HIDE 关键字意味着我们输入的文本不再回显到屏幕上。这在输入密码时非常有用。我们修改了前面的脚本以添加 HIDE 关键字。

代码语言:javascript
复制
set verify off
argument 1 prompt "Enter a value for the first argument:" hide

column arguments format a10

select '&1' as arguments;

undefine 1

我们测试修改后的脚本。

在第一个示例中,系统会提示输入参数,我们输入值“secret”。请注意,这不会在屏幕上显示。

代码语言:javascript
复制
SQL> @test.sql
Enter a value for the first argument:

ARGUMENTS
----------
secret

1 row selected.

在第二个示例中,我们在命令行上提供了值“secret2”,并且不会提示我们输入值。

代码语言:javascript
复制
SQL> @test.sql secret2

ARGUMENTS
----------
secret2

1 row selected.

DEFAULT 默认值

DEFAULT 关键字允许我们定义一个默认值,以便在未指定参数的情况下使用。我们修改了前面的脚本以分配一个默认值。

代码语言:javascript
复制
set verify off
argument 1 default "banana"

column arguments format a10

select '&1' as arguments;

undefine 1

我们测试修改后的脚本。如果我们不提供命令行参数,则使用默认值“banana”。如果我们提供命令行参数,就会使用它。

代码语言:javascript
复制
SQL> @test.sql

ARGUMENTS
----------
banana

1 row selected.

SQL> @test.sql apple

ARGUMENTS
----------
apple

1 row selected.

SQL>

argument 与 define 一起使用

在前面的示例中,我们直接使用了参数,但也可以将它们与DEFINE命令一起使用。我们修改了测试脚本,给出了以下内容。在本例中,我们使用了第一个参数来定义“arg1”,并在随后的查询中使用。

代码语言:javascript
复制
set verify off
argument 1 prompt "Enter a value for arg1:"
define arg1 = '&1';

column arguments format a10

select '&arg1' as arguments;

undefine 1

我们测试修改后的脚本,结果正如我们预期一样。

代码语言:javascript
复制
SQL> @test.sql
Enter a value for arg1:banana

ARGUMENTS
----------
banana

1 row selected.

SQL> @test.sql apple

ARGUMENTS
----------
apple

1 row selected.

SQL>

argument 与 variable 一起使用

我们还可以将参数与 SQL*Plus 和 SQLcl 中定义的变量一起使用。我们修改测试脚本,为其提供以下内容。在此示例中,我们定义了一个名为“var1”的变量,并将其设置为第一个参数的值。我们在后续查询中使用该变量。

代码语言:javascript
复制
variable var1 varchar2(10);

set verify off
argument 1 prompt "Enter a value for var1:"
set feedback off
exec :var1:= '&1';
set feedback on

column arguments format a10

select :var1 as arguments;

undefine 1

我们测试了修改后的脚本,结果正如我们预期一样。

代码语言:javascript
复制
SQL> @test.sql
Enter a value for var1:banana

ARGUMENTS
----------
banana

1 row selected.

SQL> @test.sql apple

ARGUMENTS
----------
apple

1 row selected.

SQL>
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 山东Oracle用户组 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档