DM8-disql
DM8-disql
1. 功能介绍
disql是DM数据库的一个命令行客户端工具,用来与DM数据库服务器进行交互。disql是dm数据库自带的工具,只要那装了DM数据库,就可以在应用菜单和安装目录中找到。
disql识别用户输入,将用户输入的SQK语句打包发送到DM数据库服务器执行,并接收服务器的执行结果,并按照用户的要求将执行结果展示给用户。为了更好地与用户交互和展示执行结果,用户也可以在disql中执行disql命令,这些命令由isql工具自身进行处理,不被发送给数据库服务器。
SQL语句在disql中执行完后都被保存在一个特定的内存区域中,用户可以通过上下键找到这些保存在内存中的SQL语句(某些操作系统可能不支持此操作),并可以进行修改,然后再次执行。disql命令执行完后不保存在内存区域中。
2. 启动disql
2.1 Windows启动
Windows环境下,有两种启动disql的方式。第一种是启动安装软件后生成的程序菜单,第二种是启动安装目录下自带的disql工具。
2.1.1 程序菜单启动
如果在Windows环境中安装了DM数据库产品,可以在应用菜单中找到SQL交互式查询工具,直接双击即可启动。然后使用LOGIN或CONN命令登录到执行数据库。
以LOGIN为例,登录到IP地址为10.0.0.21的机器上,用户名和密码为:SYSDBA/SYSDBA,端口号为5236。其它全部回车,采用缺省输入。密码不会回显到屏幕上。
也可以全部直接回车,采用缺省输入,登录到本地DM数据库。缺省值参考下文LOGIN命令。
2.1.2 自带disql启动
DIsql工具位于DM数据库安装目录的BIN子目录下,例如DM数据库的安装目录为D:\dmdbms,则 DIsql 位于 D:\dmdbms\bin\DIsql.exe。双击启动,然后输入用户名、密码,就可登录到本地 DM 数据库实例。密码不会回显到屏幕上。也可以全部直接回车,采用缺省输入,缺省值为 SYSDBA/SYSDBA。
如果后续操作想登录到其它DM数据库实例,可以使用LOGIN或CONN命令。
2.1.3 命令行启动
从命令行启动disql并登录到数据库,在命令行工具中找到disql所在安装目录D:\dmdbms\bin,输入 DIsql 和登录方式后回车。登录方式在下一节详细介绍。
DISQL 用法1:disql -h|help 显示disql版本信息和帮助信息
DISQL 用法2:disql [ [<option>] [<logon> | {/NOLOG}] [<start>] ]
<option> 为: [-L] [-S]
-L 只尝试登录一次
-S 隐藏模式,隐藏<SQL>标识符
<logon> 为::= {<username>[/<password>] | /}[@<connect_identifier>][<option>] [<os_auth>]
<connect_identifier>为[<svc_name> | host[:port] | <unixsocket_file>]
HOST如果是IPv6的地址,需要用[]指明是IPv6地址,例如[fe80::1e6f:65ff:fed1:3724%6]
INET_TYPE如果是UNIXSOCKET类型,<connect_identifier>需要指明是unixsocket地址,例如:/data/sdb/DAMENG/foo.sock
<option> ::= #{<extend_option>=<value>[,<extend_option>=<value>]...}
<os_auth> ::= AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
<extend_option> <value>
MPP_TYPE GLOBAL/LOCAL
INET_TYPE UDP/TCP/IPC/RDMA/UNIXSOCKET
SSL_PATH <path_str>
SSL_PWD <pwd_str>
PROXY_CLIENT <user_str>
GWDSN <GATEWAY DSN>
UKEY_NAME <ukey_name_str>
UKEY_PIN <ukey_pin_str>
SHAKE_CRYPTO <shake_crypto_str>
USER_NEW_PWD <new_pwd>
<start> ::= <`sql脚本> | <direct cmd> | <direct sql> 运行disql脚本
/NOLOG 选项能在未登录DM服务器的情况下启动disql
<`sql脚本>::= `<filename>[<parameter> { <parameter>}...]"
<direct sql>::= -e "<SQL语句>[;<SQL语句>]"
<direct cmd>::= -c "<set 命令>"
2.2 Linux启动
格式:
./disql 用户名/密码@IP:端口
端口和IP可以缺省为默认本地ip和默认端口
[dmdba@dm01 /dm8/bin]$ ./disql sysdba/SYSDBA@10.0.0.21:5236
服务器[10.0.0.21:5236]:处于普通打开状态
登录使用时间 : 2.819(ms)
disql V8
SQL> exit
[dmdba@dm01 /dm8/bin]$ ./disql sysdba/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.937(ms)
disql V8
SQL> exit
2.3 disql参数
参数 | 作用 |
---|---|
-E | 运行DIsql时直接执行后续一条或多条SQL语句,查询结果不显示行号、时间以及影响行数,且不受-C参数控制。 |
-C | 运行DISQL时直接执行后续的SET命令。 |
2.3.1 使用disql执行脚本
格式:(两种格式都可以)
`/dm8/data/DAMENG/b.sql
start /dm8/data/DAMENG/b.sql
[dmdba@dm01 /dm8/bin]$ ./disql SYSDBA/SYSDBA@10.0.0.21:5236
服务器[10.0.0.21:5236]:处于普通打开状态
登录使用时间 : 2.031(ms)
disql V8
SQL> `/dm8/data/DAMENG/b.sql
SQL> select * from ALL_USERS;
行号 USERNAME USER_ID CREATED
---------- ---------- ----------- --------------------------
1 SYSDBA 50331649 2022-09-07 11:26:29.596178
2 SYS 50331648 2022-09-07 11:26:29.596178
3 SYSAUDITOR 50331650 2022-09-07 11:26:29.596178
4 SYSSSO 50331651 2022-09-07 11:26:29.596178
5 LLL 50331748 2022-09-15 13:57:02.467525
6 SYSTOM 50331749 2022-09-16 16:41:55.751190
6 rows got
已用时间: 1.301(毫秒). 执行号:1200.
SQL> start /dm8/data/DAMENG/b.sql
SQL> select * from ALL_USERS;
行号 USERNAME USER_ID CREATED
---------- ---------- ----------- --------------------------
1 SYSDBA 50331649 2022-09-07 11:26:29.596178
2 SYS 50331648 2022-09-07 11:26:29.596178
3 SYSAUDITOR 50331650 2022-09-07 11:26:29.596178
4 SYSSSO 50331651 2022-09-07 11:26:29.596178
5 LLL 50331748 2022-09-15 13:57:02.467525
6 SYSTOM 50331749 2022-09-16 16:41:55.751190
6 rows got
已用时间: 0.689(毫秒). 执行号:1201.
2.3.2 执行SQL语句
DISQL后面执行一条SQL语句
[dmdba@dm01 /dm8/bin]$ ./disql SYSDBA/SYSDBA@10.0.0.21:5236 -E "SELECT TOP 1 * FROM LLL.TABLE_1;"
服务器[10.0.0.21:5236]:处于普通打开状态
登录使用时间 : 2.541(ms)
disql V8
ID NAME 性别 民族 政治面貌 学校 爱好 备注 学号
-- ------ ------ -------------------------------------------------- ------------ ------------ ------ ------ ----------
1 张三 男 汉族 群众 北京大学 唱 NULL 110
DISQL后面执行多条SQL语句
[dmdba@dm01 /dm8/bin]$ ./disql SYSDBA/SYSDBA@10.0.0.21:5236 -E "SELECT TOP 1 * FROM LLL.TABLE_1; SELECT TOP 1 * FROM ALL_USERS;"
服务器[10.0.0.21:5236]:处于普通打开状态
登录使用时间 : 2.259(ms)
disql V8
ID NAME 性别 民族 政治面貌 学校 爱好 备注 学号
-- ------ ------ -------------------------------------------------- ------------ ------------ ------ ------ ----------
1 张三 男 汉族 群众 北京大学 唱 NULL 110
USERNAME USER_ID CREATED
-------- ----------- --------------------------
SYSDBA 50331649 2022-09-07 11:26:29.596178
2.3.3 执行SET语句
[dmdba@dm01 /dm8/bin]$ ./disql SYSDBA/SYSDBA@10.0.0.21:5236 -C "SET LONG 1000 PAGESIZE 0"
3. 密码中存在特殊符号的书写规范
3.1 不同的操作系统
3.1.1 Windows系统
密码包含转义字符。
例如:用户名为user01,密码为aaaa/aaaa
disql user01/"""aaaa/aaaa"""
密码包含空格。
例如:用户名为uesr01,密码为aaaa aaaa
disql user01/"aaaa aaaa"
密码包含双引号。
例如:用户名为user01,密码为aaaa"aaaa
disql user01/"""aaaa""""aaa"""
3.1.2 Linux系统
密码包含/转移字符
例如:用户名为user01,密码为aaaa/aaaa
./disql user01/'"aaaa/aaaa"'
密码包含双引号
例如:用户名为user01,密码为aaaa"\aaaa
./disql user01/'"aaaa""\aaaa"'
密码包含单引号
例如:用户名为user01,密码为aaaa'aaaa
./disql user01/"aaaa'aaaa"
密码包含单引号+特殊字符
例如:用户名为user01,密码为aaa'$aaaa
./disql user01/"aaa'\$aaaa"
密码包含单引号+双引号
因为含有单双引号,只能将整个密码放入双引号中,同时对双引号使用反斜杠转义。
例如:用户名为user01,密码为aaa"'aaaa
./disql user01/"\"aaa\"\"'aaaa\""
3.2 切换登录
用户进入DIsql界面后,如果想切换到其它DM数据库实例。有两种实现方式:一是使用LOGIN命令;二是使用CONN命令。登录到远程数据库,必须在服务名处使用IP地址或网络服务名。
3.2.1 LOGIN登录主库建立会话
LOGOUT命令从登录主库注销会话。
3.2.2 CONN[ECT]/DISCONN[ECT]
DISCONN[ECT]断开连接
4. DIsql常用命令
4.1 帮助
DIsql帮助命令,可以帮助用户查看其它命令的具体用法。用户可以看到其它命令系统显示的内容,概括为:
- 命令的标题
- 命令的文本描述
- 命令的简写(例如,AUTO可以代替AUTOCOMMIT)
- 可以向命令传递的强制参数和可选参数
SQL> HELP DEFINE
DEFINE
------
设置变量值,或者显示已定义的变量信息。
DEF[INE] [variable] | [variable = text]
4.2 输出文件SPOOL
将查询结果输出到指定文件。
语法如下:
SPOOL {<file> | OFF }
<file>::= <file_path> [CRE[ATE]|REP[LACE]|APP[END]][NO_PRINT]
参数 | 含义 |
---|---|
<file_path> | 指定文件的绝对路径 |
CRE[ATE] | 创建指定的文件,若指定的文件已存在,则报错。 |
REP[LACE] | 创建指定的文件,若文件已存在,则替换。 |
APP[END]] | 将输出的内容追加到指定文件的末尾。 |
NO_PRINT | 控制台不打印查询结果。 |
OFF | 关闭SPOOL输出。 |
⚠️只有SPOOL OFF之后,才能在输出文件中看到输出的内容。
[dmdba@dm01 /dm8/bin]$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.041(ms)
disql V8
SQL> spool /dm8/data/DAMENG/a.sql
SQL> select 1;
行号 1
---------- -----------
1 1
已用时间: 1.573(毫秒). 执行号:2200.
SQL> exit
[dmdba@dm01 /dm8/bin]$ cat /dm8/data/DAMENG/a.sql
SQL> select 1;
行号 1
---------- -----------
1 1
已用时间: 1.573(毫秒). 执行号:2200.
SQL> exit
指定NO_PRINT 控制台不打印查询结果,之江查询结果输出到指定文件。
[dmdba@dm01 /dm8/bin]$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.304(ms)
disql V8
SQL>
SQL> spool /dm8/data/DAMENG/a.sql no_print
SQL> select 2;
SQL> spool off
SQL> exit
[dmdba@dm01 /dm8/bin]$ cat /dm8/data/DAMENG/a.sql
SQL> select 2;
行号 2
---------- -----------
1 2
已用时间: 0.471(毫秒). 执行号:2400.
SQL> spool off
4.3 切换到操作系统命令
使用HOST命令可以不用退出disql就能执行操作系统命令,如果单独执行HOST,则能够直接从disql界面切换到操作系统,之后可使用EXIT回到disql界面。
[dmdba@dm01 /dm8/bin]$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.399(ms)
disql V8
SQL> host hostname -I
10.0.0.21 172.16.1.21
SQL> host whoami
dmdba
SQL> host
[dmdba@dm01 bin]$ hostname -I
10.0.0.21 172.16.1.21
[dmdba@dm01 bin]$ whoami
dmdba
[dmdba@dm01 bin]$ exit
exit
SQL>
4.4 获取对象结构信息DESCRIBE
获取表或视图、存储过程、函数、包、记录、类的结构描述。
- 表或视图获取的内容包括列名、列数据类型、列是否可以去空值。
- 函数、过程、类霍去病的内容包括两类:
- 1)存储函数/过程名,类型(函数或过程),喊出返回值类型;
- 2)参数名,参数数据类型、参数输入输出属性、参数缺省值。
- 包获取的内容分为两类:
- 1)包内存存函数/过程名,类型(函数或过程),函数返回值类型;
- 2)包内参数名,参数数据类型、参数输入输出属性、参数缺省值。
- 记录获取的内容为:参数名,参数数据类型,参数是否可以去空值。
4.4.1 获取表sysgrants的结构描述
SQL> desc sysgrants;
行号 NAME TYPE$ NULLABLE
---------- --------- ------- --------
1 URID INTEGER N
2 OBJID INTEGER N
3 COLID INTEGER N
4 PRIVID INTEGER N
5 GRANTOR INTEGER N
6 GRANTABLE CHAR(1) N
6 rows got
已用时间: 14.240(毫秒). 执行号:502.
4.4.2 获取存储过程描述结构
1. 创建一个存储过程
CREATE OR REPLACE PROCEDURE PROC_1(A IN OUT INT) AS
B INT;
BEGIN
A:=A+B;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
2. 获取存储过程PROC_1的结构描述
SQL> describe PROC_1;
行号 NAME TYPE$ IO DEF RT_TYPE
---------- ------ ------- ----- --- -------
1 PROC_1 PROC
2 A INTEGER INOUT
已用时间: 24.151(毫秒). 执行号:800.
4.4.3 获取包的结构描述
1.创建实例数据库:
CREATE TABLE Person(Id INT IDENTITY, Name VARCHAR(100), City VARCHAR(100));
INSERT INTO Person(Name, City) VALUES('Tom','武汉');
INSERT INTO Person(Name, City) VALUES('Jack','北京');
INSERT INTO Person(Name, City) VALUES('Mary','上海');
2.创建包
CREATE OR REPLACE PACKAGE PersonPackage AS
E_NoPerson EXCEPTION;
PersonCount INT;
Pcur CURSOR;
PROCEDURE AddPerson(Pname VARCHAR(100), Pcity varchar(100));
PROCEDURE RemovePerson(Pname VARCHAR(100), Pcity varchar(100));
PROCEDURE RemovePerson(Pid INT);
FUNCTION GetPersonCount RETURN INT;
PROCEDURE PersonList;
END PersonPackage;
3.创建包主体
CREATE OR REPLACE PACKAGE BODY PersonPackage AS
PROCEDURE AddPerson(Pname VARCHAR(100), Pcity varchar(100) )AS
BEGIN
INSERT INTO Person(Name, City) VALUES(Pname, Pcity);
PersonCount = PersonCount + SQL%ROWCOUNT;
END AddPerson;
PROCEDURE RemovePerson(Pname VARCHAR(100), Pcity varchar(100)) AS
BEGIN
DELETE FROM Person WHERE NAME LIKE Pname AND City like Pcity;
PersonCount = PersonCount - SQL%ROWCOUNT;
END RemovePerson;
PROCEDURE RemovePerson(Pid INT) AS
BEGIN
DELETE FROM Person WHERE Id = Pid;
PersonCount = PersonCount - SQL%ROWCOUNT;
END RemovePerson;
FUNCTION GetPersonCount RETURN INT AS
BEGIN
RETURN PersonCount;
END GetPersonCount;
PROCEDURE PersonList AS
DECLARE
V_id INT;
V_name VARCHAR(100);
V_city VARCHAR(100);
BEGIN
IF PersonCount = 0 THEN
RAISE E_NoPerson;
END IF;
OPEN Pcur FOR SELECT Id, Name, City FROM Person;
LOOP
FETCH Pcur INTO V_id,V_name,V_city;
EXIT WHEN Pcur%NOTFOUND;
PRINT ('No.' + (cast (V_id as varchar(100))) + ' ' + V_name + '来自' +
V_city );
END LOOP;
CLOSE Pcur;
END PersonList;
BEGIN
SELECT COUNT(*) INTO PersonCount FROM Person;
END PersonPackage;
4.获取包personpackage的结构描述
SQL> describe PersonPackage;
行号 NAME TYPE$ IO DEF RT_TYPE
---------- -------------- ------------ -- --- -------
1 ADDPERSON PROC
2 PNAME VARCHAR(100) IN
3 PCITY VARCHAR(100) IN
4 REMOVEPERSON PROC
5 PNAME VARCHAR(100) IN
6 PCITY VARCHAR(100) IN
7 REMOVEPERSON PROC
8 PID INTEGER IN
9 GETPERSONCOUNT FUNC INTEGER
10 PERSONLIST PROC
10 rows got
已用时间: 10.673(毫秒). 执行号:801.
4.4.4 使用DEPTH显示列的结构信息
CREATE TYPE ADDRESS AS OBJECT
( STREET VARCHAR2(20),
CITY VARCHAR2(20)
);
/
CREATE TYPE ADDRESS1 AS OBJECT
( NO INT,
SADDR ADDRESS
);
/
2.创建表EMPINFO
CREATE TABLE EMPINFO
(LAST_NAME VARCHAR2(30),
EMPADDR ADDRESS,
SMADDR ADDRESS1,
JOB_ID VARCHAR2(20),
SALARY NUMBER(7,2)
);
3.设置DESCRIBE的显示方式
SQL> SET DESCRIBE DEPTH 1 LINENUM ON INDENT ON;
4.获取EMPINFO的结构描述
SQL> DESC EMPINFO;
行号 ID PID NAME TYPE$ NULLABLE
---------- -- --- --------- ----------- --------
1 1 LAST_NAME VARCHAR(30) Y
2 2 EMPADDR ADDRESS Y
3 3 2 STREET VARCHAR(20)
4 4 2 CITY VARCHAR(20)
5 5 SMADDR ADDRESS1 Y
6 6 5 NO INTEGER
7 7 5 SADDR ADDRESS
8 8 JOB_ID VARCHAR(20) Y
9 9 SALARY DEC(7, 2) Y
9 rows got
已用时间: 12.574(毫秒). 执行号:802.
设置DEPTH为1时,表EMPINFO的结构信息只显示至第一层。LINENUM为0时,显示行号ID、PID信息;反之,行号ID、PID信息不显示;INDENT为0时,NAME的显示方式发生了缩进;反之,不发生缩进。
1.重新设置DESCRIBE的显示方式,并获取表EMPINFO的结构描述如下:
SQL> SET DESCRIBE DEPTH 2 LINENUM ON INDENT ON;
SQL> DESC EMPINFO;
行号 ID PID NAME TYPE$ NULLABLE
---------- -- --- ---------- ----------- --------
1 1 LAST_NAME VARCHAR(30) Y
2 2 EMPADDR ADDRESS Y
3 3 2 STREET VARCHAR(20)
4 4 2 CITY VARCHAR(20)
5 5 SMADDR ADDRESS1 Y
6 6 5 NO INTEGER
7 7 5 SADDR ADDRESS
8 8 7 STREET VARCHAR(20)
9 9 7 CITY VARCHAR(20)
10 10 JOB_ID VARCHAR(20) Y
11 11 SALARY DEC(7, 2) Y
11 rows got
已用时间: 6.100(毫秒). 执行号:803.
4.5 DEFINE变量
用来定义一个本地变量的替代变量,然后对该变量赋一个CHAR类型的值;或者输出变量的值和类型。
1.打开DEFINE变量定义
SQL> SET DEFINE ON;
2.定义变量C1为1
SQL> DEFINE C1=1;
3.查看
SQL> SELECT &C1 FROM DUAL;
原值 1:SELECT &C1 FROM DUAL;
新值 1:SELECT 1 FROM DUAL;
行号 1
---------- -----------
1 1
已用时间: 0.910(毫秒). 执行号:807.
4.在存储函数中使用
SQL> CREATE OR REPLACE FUNCTION F1(C1 INT)RETURN INT IS
BEGIN
C1=&C1;
RETURN(C1);
END;
6.查看
SQL> SELECT F1(0);
行号 F1(0)
---------- -----------
1 1
已用时间: 0.857(毫秒). 执行号:810.
4.5.1 定义为表达式
1.定义变量 C2 为表达式,定义为表达式时必须加括号
SQL> DEFINE C2=(2+3*4);
2.查看
SQL> SELECT &C2*4 FROM DUAL;
原值 1:SELECT &C2*4 FROM DUAL;
新值 1:SELECT (2+3*4)*4 FROM DUAL;
行号 (2+3*4)*4
---------- -----------
1 56
已用时间: 0.473(毫秒). 执行号:811.
4.5.2 定义为字符类型
1.打开 DEFINE 变量定义
SQL> SET DEFINE ON;
2.定义变量 C3 为'OG'--一种使用 DEFINE 字符串变量的方式
SQL> DEFINE C3="'OG'";
3.查看
SQL> SELECT &C3 FROM DUAL;
原值 1:SELECT &C3 FROM DUAL;
新值 1:SELECT 'OG' FROM DUAL;
行号 'OG'
---------- ----
1 OG
已用时间: 1.983(毫秒). 执行号:812.
4.引用变量为函数参数
SQL> SELECT LCASE(&C3) FROM DUAL;
原值 1:SELECT LCASE(&C3) FROM DUAL;
新值 1:SELECT LCASE('OG') FROM DUAL;
行号 LCASE('OG')
---------- -----------
1 og
已用时间: 1.182(毫秒). 执行号:813.
4.5.3 变量定义为日期类型
1.打开 DEFINE 变量定义
SQL>SET DEFINE ON;
SQL> DEFINE C5="DATE'2015-10-01'";
2.引用变量增加一天
SQL> SELECT &C5+1 FROM DUAL;
原值 1:SELECT &C5+1 FROM DUAL;
新值 1:SELECT DATE'2015-10-01'+1 FROM DUAL;
行号 DATE'2015-10-01'+1
---------- ------------------
1 2015-10-02
已用时间: 1.600(毫秒). 执行号:814.
3.引用变量值与日期类型作运算
SQL> SELECT &C5+INTERVAL '01-02' YEAR TO MONTH FROM DUAL;
原值 1:SELECT &C5+INTERVAL '01-02' YEAR TO MONTH FROM DUAL;
新值 1:SELECT DATE'2015-10-01'+INTERVAL '01-02' YEAR TO MONTH FROM DUAL;
行号 DATE'2015-10-01'+INTERVAL+'01-02'YEARTOMONTH
---------- --------------------------------------------
1 2016-12-01
已用时间: 11.638(毫秒). 执行号:815.
4.6 查看执行计划explain
语法:
explain <sql_clause>
SQL> explain select count(*) from sysobjects;
1 #NSET2: [1, 1, 0]
2 #PRJT2: [1, 1, 0]; exp_num(1), is_atom(FALSE)
3 #FAGR2: [1, 1, 0]; sfun_num(1),
已用时间: 13.118(毫秒). 执行号:0.
5. 在DIsql中使用脚本
5.1 使用脚本
1.脚本
[dmdba@dm01 /dm8/bin]$ cat /dm8/test.sql
drop table t01;
create table t01(c1 varchar(100), c2 varchar(100));
2.进入disql之后,运行脚本
[dmdba@dm01 /dm8/bin]$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.916(ms)
disql V8
SQL> start /dm8/test.sql
SQL> drop table t01;
操作已执行
已用时间: 10.720(毫秒). 执行号:1200.
SQL> create table t01(c1 varchar(100), c2 varchar(100));
操作已执行
已用时间: 2.523(毫秒). 执行号:1201.
5.2 编辑脚本EDIT
SQL> edit /dm8/test.sql
详情请参考:https://eco.dameng.com
更多推荐
所有评论(0)