lightdb ltsql支持prompt提示命令

背景

在信创移植DDL SQL语句中,来源于Oracle数据库的SQL语句文件存在prompt命令。在 Oracle SQLPlus 中,prompt命令用于向用户显示一条消息或文本。它通常用于在脚本执行过程中提供一些额外信息,以帮助用户了解脚本的执行状态或流程。这在编写复杂的 SQLPlus 脚本或在执行脚本时需要向用户显示进度时非常有用。
这命令类似于PG \echo命令;LightDB 23.2版本起支持prompt命令使得信创移植更加平滑。

场景

ltsql是LightDB 命令行交互工具。针对prompt的使用,主要有如下场景

  • ltsql交互模式下直接执行prompt命令
  • ltsql非交互模式下执行文件内容中包含prompt命令

案例演示

交互模式

lightdb@postgres=# create table test(id int);
CREATE TABLE
lightdb@postgres=# prompt select start
select start
lightdb@postgres=# select count(*) from test;
 count 
-------
     0
(1 row)

lightdb@postgres=# prompt select complete
select complete

在上述示例中,我们使用prompt打印提示出我们的交互信息。

文件模式

文件test1.sql内容如下:

PROMPT Creating table...

CREATE TABLE test_table (
  id NUMBER PRIMARY KEY,
  name VARCHAR2(50)
);

PROMPT Inserting data...

BEGIN;

INSERT INTO test_table (id, name) VALUES (1, 'John Doe');
INSERT INTO test_table (id, name) VALUES (2, 'Jane Smith');

COMMIT;

PROMPT Querying data...

SELECT * FROM test_table;

DROP table test_table;

PROMPT Done.

执行SQL效果:

zhangliang[lightdb@localhost ~/stage/lightdb-x/bin]$ ./ltsql -f test/ltsql/test1.sql 
Creating table...
CREATE TABLE
Inserting data...
BEGIN
INSERT 0 1
INSERT 0 1
COMMIT
Querying data...
 id |    name    
----+------------
  1 | John Doe
  2 | Jane Smith
(2 rows)

DROP TABLE
Done.

上述示例展示了在文件中使用prompt命令展示SQL执行状态和流程信息。

复杂场景展示

我们注意到prompt命令后面无需跟;结束符。同时在SQLPlus当中 prompt支持大写、小写、大小混写、前缀空格、前缀制表、前空行、前空行含空格、前空行含制表、空行制表混合。针对这一场景,LightDB中也做了兼容。如下示例。

文件test2.sql内容如下:

prompt test1
prompt test2
 prompt test3
        prompt test4
prompt "test5"
prompt "test6";
prompt "test7";;
Prompt "test8";;;
PrOmpt "test9"
PROMPT "test10"

prompt create table.

create table demo (
prompt text
);

prompt insert data.
insert into demo values('test1');
insert into demo values('test2');

prompt query data.
select * from demo;

prompt drop table.
drop table demo;

PROMPT "test11"
                
PROMPT "test12"

PROMPT "test13"
                           
PROMPT "test14"

执行SQL效果:

zhangliang[lightdb@localhost ~/stage/lightdb-x/bin]$ ./ltsql -f test/ltsql/test2.sql 
test1
test2
test3
test4
"test5"
"test6";
"test7";;
"test8";;;
"test9"
"test10"
create table.
CREATE TABLE
insert data.
INSERT 0 1
INSERT 0 1
query data.
 prompt 
--------
 test1
 test2
(2 rows)

drop table.
DROP TABLE
"test11"
"test12"
"test13"
"test14"

结论

在LightDB中, ltsql支持prompt命令,该命令无需;结尾,同时该命令支持交互和文件两种模式下执行,支持大写、小写、大小混写、前缀空格、前缀制表、前空行、前空行含空格、前空行含制表、空行制表混合

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值